diff --git a/.gitignore b/.gitignore index ba6ca97f..bd53fcaa 100644 --- a/.gitignore +++ b/.gitignore @@ -51,6 +51,9 @@ gen-external-apklibs # BlueJ files *.ctxt +# Kotlin files +.kotlin/ + # Mobile Tools for Java (J2ME) .mtj.tmp/ diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 62ece7e0..704925c3 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,4 +1,5 @@ import com.terning.build_logic.extension.setNamespace +import org.jetbrains.kotlin.gradle.dsl.JvmTarget import java.util.Properties plugins { @@ -64,15 +65,14 @@ android { proguardFiles("baseline-profiles-rules.pro") } } - kotlinOptions { - jvmTarget = libs.versions.jvmTarget.get() + kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) + } } buildFeatures { buildConfig = true } - composeOptions { - kotlinCompilerExtensionVersion = libs.versions.kotlinCompilerExtensionVersion.get() - } } dependencies { diff --git a/build-logic/build.gradle.kts b/build-logic/build.gradle.kts index 37c0c62b..641d970e 100644 --- a/build-logic/build.gradle.kts +++ b/build-logic/build.gradle.kts @@ -6,7 +6,7 @@ plugins { dependencies { implementation(libs.android.gradlePlugin) implementation(libs.kotlin.gradlePlugin) - compileOnly(libs.compose.compiler.gradle.plugin) + compileOnly(libs.compose.compiler.extension) } tasks.named("compileTestKotlin") { diff --git a/build-logic/src/main/java/com/terning/build_logic/convention/ComposeAndroid.kt b/build-logic/src/main/java/com/terning/build_logic/convention/ComposeAndroid.kt index 29e93c13..603cc8fd 100644 --- a/build-logic/src/main/java/com/terning/build_logic/convention/ComposeAndroid.kt +++ b/build-logic/src/main/java/com/terning/build_logic/convention/ComposeAndroid.kt @@ -1,25 +1,17 @@ package com.terning.build_logic.convention -import com.android.build.gradle.BaseExtension import com.terning.build_logic.extension.libs import org.gradle.api.Project import org.gradle.kotlin.dsl.dependencies import org.gradle.kotlin.dsl.getByType +import org.jetbrains.kotlin.compose.compiler.gradle.ComposeCompilerGradlePluginExtension internal fun Project.configureComposeAndroid() { - - val libs = extensions.libs - - extensions.getByType().apply { - composeOptions { - kotlinCompilerExtensionVersion = - libs.findVersion("kotlinCompilerExtensionVersion").get().requiredVersion - } + with(plugins) { + apply("org.jetbrains.kotlin.plugin.compose") } - extensions.getByType().apply { - buildFeatures.compose = true - } + val libs = extensions.libs dependencies { add("implementation", libs.findLibrary("androidx.compose.material3").get()) @@ -32,4 +24,9 @@ internal fun Project.configureComposeAndroid() { add("implementation", libs.findLibrary("androidx.lifecycle.runtimeCompose").get()) add("implementation", libs.findLibrary("androidx.lifecycle.viewModelCompose").get()) } + + extensions.getByType().apply { + enableStrongSkippingMode.set(true) + includeSourceInformation.set(true) + } } diff --git a/build.gradle.kts b/build.gradle.kts index 210a6b86..da9ded71 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -12,6 +12,7 @@ plugins { alias(libs.plugins.kotlin.parcelize) apply false alias(libs.plugins.dokka) apply false alias(libs.plugins.baselineprofile) apply false + alias(libs.plugins.compose.compiler) apply false } buildscript { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 653ba5b0..6206a9a7 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,7 +4,6 @@ minSdk = "28" targetSdk = "35" versionName = "1.2.2" versionCode = "102020" -kotlinCompilerExtensionVersion = "1.5.2" jvmTarget = "1.8" ## Android gradle plugin @@ -19,7 +18,7 @@ androidxActivity = "1.9.0" androidxDatastore = "1.1.1" ## Kotlin Symbol Processing -ksp = "1.9.0-1.0.12" +ksp = "2.0.0-1.0.22" ## Compose androidxComposeBom = "2024.04.01" @@ -41,7 +40,7 @@ workManagerVersion = "2.8.1" ossVersion = "17.0.0" ## Kotlin -kotlin = "1.9.0" +kotlin = "2.0.0" kotlinxImmutable = "0.3.7" kotlinxSerializationJsonVersion = "1.5.1" serialization = "1.6.3" @@ -128,7 +127,6 @@ androidx-compose-ui-testManifest = { group = "androidx.compose.ui", name = "ui-t androidx-compose-navigation = { group = "androidx.navigation", name = "navigation-compose", version.ref = "composeNavigation" } androidx-compose-navigation-test = { group = "androidx.navigation", name = "navigation-testing", version.ref = "composeNavigation" } androidx-compose-saveable = { group = "androidx.compose.runtime", name = "runtime-saveable", version.ref = "composeSavable" } -compose-compiler-gradle-plugin = { group = "androidx.compose.compiler", name = "compiler", version.ref = "kotlinCompilerExtensionVersion" } androidx-ui = { group = "androidx.compose.ui", name = "ui" } androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" } @@ -173,6 +171,7 @@ coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines- kotlin = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib", version.ref = "kotlin" } kotlin-gradlePlugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } kotlin-collections-immutable = { group = "org.jetbrains.kotlinx", name = "kotlinx-collections-immutable", version.ref = "kotlinx-collections-immutable" } +compose-compiler-extension = { module = "org.jetbrains.kotlin:compose-compiler-gradle-plugin", version.ref = "kotlin" } coil-compose = { module = "io.coil-kt.coil3:coil-compose", version.ref = "coilCompose" } coil-network-okhttp = { module = "io.coil-kt.coil3:coil-network-okhttp", version.ref = "coilCompose" } @@ -217,8 +216,8 @@ android-test = { id = "com.android.test", version.ref = "androidGradlePlugin" } ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlinParcelize" } dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" } -kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version = "kotlinCompilerExtensionVersion" } baselineprofile = { id = "androidx.baselineprofile", version.ref = "baselineprofile" } +compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } terning-application = { id = "terning.android.application", version = "unspecified" } terning-compose = { id = "terning.android.compose", version = "unspecified" }