11package com.stslex93.notes
22
3+ import AppExt.APP_PREFIX
4+ import AppExt.findVersionInt
5+ import AppExt.libs
36import com.android.build.api.dsl.CommonExtension
7+ import com.android.build.gradle.AppExtension
48import org.gradle.api.JavaVersion
59import org.gradle.api.Project
610import org.gradle.api.artifacts.VersionCatalogsExtension
711import org.gradle.kotlin.dsl.dependencies
812import org.gradle.kotlin.dsl.getByType
913import org.gradle.kotlin.dsl.provideDelegate
1014import org.gradle.kotlin.dsl.withType
15+ import org.jetbrains.kotlin.gradle.dsl.JvmTarget
1116import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
1217
1318/* *
1419 * Configure base Kotlin with Android options
1520 */
1621internal fun Project.configureKotlinAndroid (
17- commonExtension : CommonExtension <* , * , * , * , * >,
18- ) {
19- commonExtension.apply {
22+ commonExtension : CommonExtension <* , * , * , * , * , * >,
23+ ): Unit = with (commonExtension) {
2024
21- compileSdk = 34
25+ compileSdk = libs.findVersionInt( " compileSdk " )
2226
23- defaultConfig {
24- minSdk = 28
25- buildFeatures.buildConfig = true
26- }
27+ namespace = getNameSpace(commonExtension)
2728
28- compileOptions {
29- // Up to Java 11 APIs are available through desugaring
30- // https://developer.android.com/studio/write/java11-minimal-support-table
31- sourceCompatibility = JavaVersion .VERSION_11
32- targetCompatibility = JavaVersion .VERSION_11
33- isCoreLibraryDesugaringEnabled = true
34- }
29+ defaultConfig {
30+ minSdk = libs.findVersionInt(" minSdk" )
31+ buildFeatures.buildConfig = true
32+ }
33+
34+ compileOptions {
35+ // Up to Java 11 APIs are available through desugaring
36+ // https://developer.android.com/studio/write/java11-minimal-support-table
37+ sourceCompatibility = JavaVersion .VERSION_17
38+ targetCompatibility = JavaVersion .VERSION_17
39+ isCoreLibraryDesugaringEnabled = true
3540 }
3641
3742 configureKotlin()
@@ -61,22 +66,29 @@ internal fun Project.configureKotlinAndroid(
6166 }
6267}
6368
64- /* *
65- * Configure base Kotlin options
66- */
69+ private fun Project.getNameSpace (
70+ commonExtension : CommonExtension <* , * , * , * , * , * >,
71+ ): String {
72+ val isApp = commonExtension is AppExtension
73+ val dropValue = if (isApp) 2 else 1
74+ val moduleName = path.split(" :" )
75+ .drop(dropValue)
76+ .joinToString(" ." )
77+ .replace(" -" , " _" )
78+ return if (moduleName.isNotEmpty()) " $APP_PREFIX .$moduleName " else APP_PREFIX
79+ }
80+
6781private fun Project.configureKotlin () {
6882 // Use withType to workaround https://youtrack.jetbrains.com/issue/KT-55947
6983 tasks.withType<KotlinCompile >().configureEach {
70- kotlinOptions {
84+ compilerOptions {
7185 // Set JVM target to 11
72- jvmTarget = JavaVersion . VERSION_11 .toString( )
86+ jvmTarget.set( JvmTarget . JVM_17 )
7387 // Treat all Kotlin warnings as errors (disabled by default)
7488 // Override by setting warningsAsErrors=true in your ~/.gradle/gradle.properties
7589 val warningsAsErrors: String? by project
76- allWarningsAsErrors = warningsAsErrors.toBoolean()
77- freeCompilerArgs = freeCompilerArgs + listOf (
78- " -opt-in=kotlin.RequiresOptIn" ,
79- )
90+ allWarningsAsErrors.set(warningsAsErrors?.toBoolean() ? : false )
91+ freeCompilerArgs.addAll(" -opt-in=kotlin.RequiresOptIn" , " -Xcontext-parameters" )
8092 }
8193 }
8294}
0 commit comments