/* * 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.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions internal fun Project.configureKotlinAndroid( commonExtension: CommonExtension<*, *, *, *>, ) { commonExtension.apply { compileSdk = 33 defaultConfig { minSdk = 21 } flavorDimensions += "mainFlavorDimension" productFlavors { create("playStore") {} create("appGallery") {} create("ruStore") {} create("nashStore") {} create("ruMarket") {} create("fdroid") {} } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 isCoreLibraryDesugaringEnabled = true } buildFeatures { compose = false aidl = false renderScript = false shaders = false buildConfig = false resValues = false } packagingOptions { 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" ) jvmTarget = JavaVersion.VERSION_1_8.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) }