Skip to content

Commit 5680d68

Browse files
authored
Merge pull request #359 from NordicSemiconductor/migration/kotlin/2.3
Migration to Kotlin 2.3 for AGP 2.11
2 parents d31af58 + 436ff76 commit 5680d68

File tree

5 files changed

+28
-14
lines changed

5 files changed

+28
-14
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131

3232
// Top-level build file where you can add configuration options common to all sub-projects/modules.
3333
plugins {
34-
id 'org.jetbrains.kotlin.android' version '2.2.20' apply false
34+
id 'org.jetbrains.kotlin.android' version '2.3.0' apply false
3535
id 'io.github.gradle-nexus.publish-plugin' version '2.0.0'
3636
}
3737

gradle.properties

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,7 @@
3333
org.gradle.parallel=true
3434
org.gradle.caching=true
3535
org.gradle.configureondemand=true
36-
org.gradle.configuration-cache=true
36+
org.gradle.configuration-cache=true
37+
38+
org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled
39+
org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true

gradle/libs.versions.toml

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[versions]
22
androidGradlePlugin = "8.13.2"
3-
kotlin = "2.2.21" # When changes, update also kotlinAndroid.kt
4-
ksp = "2.3.3"
3+
kotlin = "2.3.0" # When changes, update also kotlinAndroid.kt
4+
ksp = "2.3.4"
55
androidxActivity = "1.11.0" # Don't update
66
androidxAnnotation = "1.9.1"
77
androidxAppCompat = "1.7.1"
@@ -80,7 +80,7 @@ gson = "2.13.2"
8080
fasterxml = "2.13.5" # don't update
8181

8282
# Plugin versions
83-
nordicPlugins = "2.11" # Freeze at 2.11. Version 2.12 increases minSdk to 23.
83+
nordicPlugins = "2.11.1" # Freeze at 2.11. Version 2.12 increases minSdk to 23.
8484
dokkaPlugin = "2.1.0"
8585
googleServicesPlugins = "4.4.2"
8686
firebaseCrashlyticsPlugins = "3.0.2"
@@ -170,15 +170,16 @@ firebase-analytics = { group = "com.google.firebase", name = "firebase-analytics
170170
firebase-database = { group = "com.google.firebase", name = "firebase-database-ktx" }
171171
firebase-crashlytics = { group = "com.google.firebase", name = "firebase-crashlytics-ktx" }
172172
hilt-android = { group = "com.google.dagger", name = "hilt-android", version.ref = "hilt" }
173-
hilt-ext-work = { group = "androidx.hilt", name = "hilt-work", version.ref = "hiltExt" }
174-
hilt-ext-compiler = { group = "androidx.hilt", name = "hilt-compiler", version.ref = "hiltExt" }
175-
hilt-compiler = { group = "com.google.dagger", name = "hilt-android-compiler", version.ref = "hilt" }
173+
hilt-android-compiler = { group = "com.google.dagger", name = "hilt-android-compiler", version.ref = "hilt" }
176174
hilt-android-testing = { group = "com.google.dagger", name = "hilt-android-testing", version.ref = "hilt" }
175+
hilt-ext-compiler = { group = "androidx.hilt", name = "hilt-compiler", version.ref = "hiltExt" }
176+
hilt-ext-work = { group = "androidx.hilt", name = "hilt-work", version.ref = "hiltExt" }
177177
junit4 = { group = "junit", name = "junit", version.ref = "junit4" }
178178
truth = { group = "com.google.truth", name = "truth", version.ref = "truth" }
179179
kotlin-test = { group = "org.jetbrains.kotlin", name = "kotlin-test", version.ref = "kotlin" }
180180
kotlin-junit = { group = "org.jetbrains.kotlin", name = "kotlin-test-junit", version.ref = "kotlin" }
181181
kotlin-stdlib = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib-jdk8", version.ref = "kotlin" }
182+
kotlin-metadata-jvm = { group = "org.jetbrains.kotlin", name = "kotlin-metadata-jvm", version.ref = "kotlin" }
182183
kotlinx-coroutines-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version.ref = "kotlinxCoroutines" }
183184
kotlinx-coroutines-android = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "kotlinxCoroutines" }
184185
kotlinx-coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "kotlinxCoroutines" }

plugins/src/main/kotlin/AndroidHiltConventionPlugin.kt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,21 @@ class AndroidHiltConventionPlugin : Plugin<Project> {
3939
with(target) {
4040
with(pluginManager) {
4141
apply("no.nordicsemi.android.plugin.kotlin")
42-
apply("org.jetbrains.kotlin.kapt")
42+
apply("com.google.devtools.ksp")
4343
apply("dagger.hilt.android.plugin")
4444
}
4545

4646
dependencies {
4747
add("implementation", libs.findLibrary("hilt.android").get())
48-
add("kapt", libs.findLibrary("hilt.compiler").get())
49-
add("kaptTest", libs.findLibrary("hilt.compiler").get())
50-
add("kaptAndroidTest", libs.findLibrary("hilt.compiler").get())
48+
add("ksp", libs.findLibrary("hilt.android.compiler").get())
49+
add("kspTest", libs.findLibrary("hilt.android.compiler").get())
50+
add("kspAndroidTest", libs.findLibrary("hilt.android.compiler").get())
51+
}
52+
53+
// TODO: Remove when Dagger bumps Kotlin metadata dependency to 2.3.0
54+
// (see also https://github.com/google/dagger/issues/5059)
55+
configurations.configureEach {
56+
resolutionStrategy.force(libs.findLibrary("kotlin.metadata.jvm").get())
5157
}
5258
}
5359
}

plugins/src/main/kotlin/no/nordicsemi/android/buildlogic/KotlinAndroid.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,15 @@ private inline fun <reified T : KotlinBaseExtension> Project.configureKotlin() =
8686
}.apply {
8787
allWarningsAsErrors.set(warningsAsErrors.toBoolean())
8888

89-
languageVersion.set(KotlinVersion.KOTLIN_2_2)
90-
apiVersion.set(KotlinVersion.KOTLIN_2_2)
89+
languageVersion.set(KotlinVersion.KOTLIN_2_3)
90+
apiVersion.set(KotlinVersion.KOTLIN_2_3)
9191
jvmTarget.set(JvmTarget.JVM_17)
9292
optIn.add("kotlin.RequiresOptIn")
9393
optIn.add("kotlinx.coroutines.ExperimentalCoroutinesApi")
9494
optIn.add("kotlinx.coroutines.FlowPreview")
95+
// https://kotlinlang.org/docs/whatsnew23.html#explicit-backing-fields
96+
freeCompilerArgs.add("-Xexplicit-backing-fields")
97+
// https://kotlinlang.org/docs/whatsnew23.html#unused-return-value-checker
98+
freeCompilerArgs.add("-Xreturn-value-checker=full")
9599
}
96100
}

0 commit comments

Comments
 (0)