/* * Unitto is a unit converter for Android * Copyright (c) 2023 Elshan Agaev * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ package com.sadellie.unitto import com.android.build.api.dsl.CommonExtension import org.gradle.api.JavaVersion import org.gradle.api.Project import org.gradle.api.artifacts.VersionCatalogsExtension import org.gradle.api.plugins.ExtensionAware import org.gradle.kotlin.dsl.dependencies import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.withType import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions import org.jetbrains.kotlin.gradle.tasks.KotlinCompile @Suppress("UnstableApiUsage") internal fun Project.configureKotlinAndroid( commonExtension: CommonExtension<*, *, *, *>, ) { commonExtension.apply { compileSdk = 34 defaultConfig { minSdk = 21 } flavorDimensions += "mainFlavorDimension" productFlavors { create("playStore") {} create("ruStore") {} create("fdroid") {} } compileOptions { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 isCoreLibraryDesugaringEnabled = true } buildFeatures { compose = false aidl = false renderScript = false shaders = false buildConfig = false resValues = false } packaging { resources { excludes.add("/META-INF/{AL2.0,LGPL2.1}") } } kotlinOptions { freeCompilerArgs = freeCompilerArgs + listOf( "-opt-in=androidx.compose.material3.ExperimentalMaterial3Api", "-opt-in=androidx.compose.animation.ExperimentalAnimationApi", "-opt-in=androidx.compose.foundation.ExperimentalFoundationApi", "-opt-in=androidx.compose.ui.unit.ExperimentalUnitApi", "-opt-in=androidx.lifecycle.compose.ExperimentalLifecycleComposeApi", "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", ) jvmTarget = JavaVersion.VERSION_11.toString() } } tasks.withType().configureEach { kotlinOptions { // Set JVM target to 11 jvmTarget = JavaVersion.VERSION_11.toString() } } val libs = extensions.getByType().named("libs") dependencies { add("coreLibraryDesugaring", libs.findLibrary("android.desugarJdkLibs").get()) } } fun CommonExtension<*, *, *, *>.kotlinOptions(block: KotlinJvmOptions.() -> Unit) { (this as ExtensionAware).extensions.configure("kotlinOptions", block) }