From 199110eaf54193101d7b890be35423c80c284992 Mon Sep 17 00:00:00 2001 From: Jaehwa Noh Date: Fri, 19 Apr 2024 10:50:30 +0900 Subject: [PATCH 01/13] Change to toolchain and remove `KotlinCompile`. Change-Id: I86d606a582e3cdf5b7d2c9304783a905682920ad --- build-logic/convention/build.gradle.kts | 10 ++-------- lint/build.gradle.kts | 11 ++--------- 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts index aa0e615ade..db80da159e 100644 --- a/build-logic/convention/build.gradle.kts +++ b/build-logic/convention/build.gradle.kts @@ -14,8 +14,6 @@ * limitations under the License. */ -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile - plugins { `kotlin-dsl` } @@ -25,12 +23,8 @@ group = "com.google.samples.apps.nowinandroid.buildlogic" // Configure the build-logic plugins to target JDK 17 // This matches the JDK used to build the project, and is not related to what is running on device. java { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 -} -tasks.withType().configureEach { - kotlinOptions { - jvmTarget = JavaVersion.VERSION_17.toString() + toolchain { + languageVersion = JavaLanguageVersion.of(17) } } diff --git a/lint/build.gradle.kts b/lint/build.gradle.kts index acb540c3b2..666119c571 100644 --- a/lint/build.gradle.kts +++ b/lint/build.gradle.kts @@ -14,8 +14,6 @@ * limitations under the License. */ -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile - plugins { `java-library` kotlin("jvm") @@ -25,13 +23,8 @@ plugins { java { // Up to Java 11 APIs are available through desugaring // https://developer.android.com/studio/write/java11-minimal-support-table - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 -} - -tasks.withType().configureEach { - kotlinOptions { - jvmTarget = JavaVersion.VERSION_11.toString() + toolchain { + languageVersion = JavaLanguageVersion.of(11) } } From f46635fa9872008aaad0d72c5e2c1594997ca7f1 Mon Sep 17 00:00:00 2001 From: Jaehwa Noh Date: Fri, 19 Apr 2024 10:51:36 +0900 Subject: [PATCH 02/13] Add plugins - "org.gradle.toolchains.foojay-resolver-convention". Change-Id: I8368ffa068c1b6318160fc4783f851595cd667ff --- settings.gradle.kts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/settings.gradle.kts b/settings.gradle.kts index d4b6654b17..b5cc7b50d1 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -14,6 +14,10 @@ * limitations under the License. */ +plugins { + id("org.gradle.toolchains.foojay-resolver-convention") version("0.8.0") +} + pluginManagement { includeBuild("build-logic") repositories { From e3fb617b5128804e6a5d740229ef1d7fab6c2fdf Mon Sep 17 00:00:00 2001 From: Jaehwa Noh Date: Fri, 19 Apr 2024 11:26:11 +0900 Subject: [PATCH 03/13] Move lines. Change-Id: I0d706d410ca339789c0fea60b451aa82920648de --- settings.gradle.kts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/settings.gradle.kts b/settings.gradle.kts index b5cc7b50d1..2370fe8b3b 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -14,10 +14,6 @@ * limitations under the License. */ -plugins { - id("org.gradle.toolchains.foojay-resolver-convention") version("0.8.0") -} - pluginManagement { includeBuild("build-logic") repositories { @@ -27,6 +23,10 @@ pluginManagement { } } +plugins { + id("org.gradle.toolchains.foojay-resolver-convention") version("0.8.0") +} + dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { From f4dfdf1af666bdabbd39a438763f9903991c775f Mon Sep 17 00:00:00 2001 From: Jaehwa Noh Date: Tue, 23 Apr 2024 15:03:15 +0900 Subject: [PATCH 04/13] Remove JavaVersion 11 Change-Id: Ibdf89dd4f82a01fd8b765adb94668a615970c291 --- .../com/google/samples/apps/nowinandroid/KotlinAndroid.kt | 6 ------ 1 file changed, 6 deletions(-) diff --git a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt index f9a6717c30..b297334f34 100644 --- a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt +++ b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt @@ -40,10 +40,6 @@ internal fun Project.configureKotlinAndroid( } compileOptions { - // Up to Java 11 APIs are available through desugaring - // https://developer.android.com/studio/write/java11-minimal-support-table - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 isCoreLibraryDesugaringEnabled = true } } @@ -76,8 +72,6 @@ private fun Project.configureKotlin() { // Use withType to workaround https://youtrack.jetbrains.com/issue/KT-55947 tasks.withType().configureEach { kotlinOptions { - // Set JVM target to 11 - jvmTarget = JavaVersion.VERSION_11.toString() // Treat all Kotlin warnings as errors (disabled by default) // Override by setting warningsAsErrors=true in your ~/.gradle/gradle.properties val warningsAsErrors: String? by project From 1eedad1f36a494ea618266015342e4f7cf5dae8e Mon Sep 17 00:00:00 2001 From: Jaehwa Noh Date: Tue, 23 Apr 2024 15:39:17 +0900 Subject: [PATCH 05/13] Rename to configureToolChain, and set toolchain 11 Change-Id: I878ab5315b861319d61498670124f0de5d4a5c49 --- .../main/kotlin/JvmLibraryConventionPlugin.kt | 4 ++-- .../samples/apps/nowinandroid/KotlinAndroid.kt | 16 +++++++++------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/build-logic/convention/src/main/kotlin/JvmLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/JvmLibraryConventionPlugin.kt index 35932c835c..40f1e04a0f 100644 --- a/build-logic/convention/src/main/kotlin/JvmLibraryConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/JvmLibraryConventionPlugin.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -import com.google.samples.apps.nowinandroid.configureKotlinJvm +import com.google.samples.apps.nowinandroid.configureToolChain import org.gradle.api.Plugin import org.gradle.api.Project @@ -25,7 +25,7 @@ class JvmLibraryConventionPlugin : Plugin { apply("org.jetbrains.kotlin.jvm") apply("nowinandroid.android.lint") } - configureKotlinJvm() + configureToolChain() } } } diff --git a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt index b297334f34..ee0d328592 100644 --- a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt +++ b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt @@ -17,9 +17,9 @@ package com.google.samples.apps.nowinandroid import com.android.build.api.dsl.CommonExtension -import org.gradle.api.JavaVersion import org.gradle.api.Project import org.gradle.api.plugins.JavaPluginExtension +import org.gradle.jvm.toolchain.JavaLanguageVersion import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.dependencies import org.gradle.kotlin.dsl.provideDelegate @@ -44,7 +44,7 @@ internal fun Project.configureKotlinAndroid( } } - configureKotlin() + configureToolChain() dependencies { add("coreLibraryDesugaring", libs.findLibrary("android.desugarJdkLibs").get()) @@ -52,14 +52,16 @@ internal fun Project.configureKotlinAndroid( } /** - * Configure base Kotlin options for JVM (non-Android) + * Configure Toolchain and [configureKotlin] */ -internal fun Project.configureKotlinJvm() { - extensions.configure { +internal fun Project.configureToolChain() { + configure { // Up to Java 11 APIs are available through desugaring // https://developer.android.com/studio/write/java11-minimal-support-table - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 + // Set Toolchain 11 + toolchain { + languageVersion.set(JavaLanguageVersion.of(11)) + } } configureKotlin() From 2f4b76a1797a38a2364af64cd827b965dcbc9815 Mon Sep 17 00:00:00 2001 From: Jaehwa Noh Date: Tue, 23 Apr 2024 15:41:02 +0900 Subject: [PATCH 06/13] Change java to kotlin extension. Change-Id: Ic32957cfcbfbf80bf82358fd4811be8d17bb3a94 --- build-logic/convention/build.gradle.kts | 6 ++---- lint/build.gradle.kts | 6 ++---- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts index db80da159e..0755c8582c 100644 --- a/build-logic/convention/build.gradle.kts +++ b/build-logic/convention/build.gradle.kts @@ -22,10 +22,8 @@ group = "com.google.samples.apps.nowinandroid.buildlogic" // Configure the build-logic plugins to target JDK 17 // This matches the JDK used to build the project, and is not related to what is running on device. -java { - toolchain { - languageVersion = JavaLanguageVersion.of(17) - } +kotlin { + jvmToolchain(17) } dependencies { diff --git a/lint/build.gradle.kts b/lint/build.gradle.kts index 666119c571..2639db0205 100644 --- a/lint/build.gradle.kts +++ b/lint/build.gradle.kts @@ -20,12 +20,10 @@ plugins { alias(libs.plugins.nowinandroid.android.lint) } -java { +kotlin { // Up to Java 11 APIs are available through desugaring // https://developer.android.com/studio/write/java11-minimal-support-table - toolchain { - languageVersion = JavaLanguageVersion.of(11) - } + jvmToolchain(11) } dependencies { From 54d017c669f2e7fc50f29b6128c9677fb070478d Mon Sep 17 00:00:00 2001 From: Jaehwa Noh Date: Tue, 23 Apr 2024 19:28:06 +0900 Subject: [PATCH 07/13] Set toolchain 17 --- .../com/google/samples/apps/nowinandroid/KotlinAndroid.kt | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt index ee0d328592..54981df02c 100644 --- a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt +++ b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt @@ -56,11 +56,8 @@ internal fun Project.configureKotlinAndroid( */ internal fun Project.configureToolChain() { configure { - // Up to Java 11 APIs are available through desugaring - // https://developer.android.com/studio/write/java11-minimal-support-table - // Set Toolchain 11 toolchain { - languageVersion.set(JavaLanguageVersion.of(11)) + languageVersion.set(JavaLanguageVersion.of(17)) } } From 7ab4d378b42188c1e1ffe0ad7d57aacc4ab10b09 Mon Sep 17 00:00:00 2001 From: Jaehwa Noh Date: Thu, 30 May 2024 16:32:37 +0900 Subject: [PATCH 08/13] Call configureKotlin directly. Change-Id: I5aef26e99c33124ebe99c5045a7ca89083a2e73d --- .../convention/src/main/kotlin/JvmLibraryConventionPlugin.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/build-logic/convention/src/main/kotlin/JvmLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/JvmLibraryConventionPlugin.kt index 40f1e04a0f..6c4c05a85b 100644 --- a/build-logic/convention/src/main/kotlin/JvmLibraryConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/JvmLibraryConventionPlugin.kt @@ -14,9 +14,10 @@ * limitations under the License. */ -import com.google.samples.apps.nowinandroid.configureToolChain +import com.google.samples.apps.nowinandroid.configureKotlin import org.gradle.api.Plugin import org.gradle.api.Project +import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension class JvmLibraryConventionPlugin : Plugin { override fun apply(target: Project) { @@ -25,7 +26,7 @@ class JvmLibraryConventionPlugin : Plugin { apply("org.jetbrains.kotlin.jvm") apply("nowinandroid.android.lint") } - configureToolChain() + configureKotlin() } } } From 5fcb66a2238b93d23fd27299895917b10610ac84 Mon Sep 17 00:00:00 2001 From: Jaehwa Noh Date: Thu, 30 May 2024 16:33:15 +0900 Subject: [PATCH 09/13] Remove configureToolChain function. Change-Id: I3e04f3fdf04a2ac98cf83c331e38202920cf1bce --- .../samples/apps/nowinandroid/KotlinAndroid.kt | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt index 50527d8b65..d5fac831e6 100644 --- a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt +++ b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt @@ -18,13 +18,10 @@ package com.google.samples.apps.nowinandroid import com.android.build.api.dsl.CommonExtension import org.gradle.api.Project -import org.gradle.api.plugins.JavaPluginExtension import org.gradle.kotlin.dsl.assign -import org.gradle.jvm.toolchain.JavaLanguageVersion import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.dependencies import org.gradle.kotlin.dsl.provideDelegate -import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension import org.jetbrains.kotlin.gradle.dsl.KotlinTopLevelExtension @@ -47,7 +44,6 @@ internal fun Project.configureKotlinAndroid( } } - configureToolChain() configureKotlin() dependencies { @@ -55,19 +51,6 @@ internal fun Project.configureKotlinAndroid( } } -/** - * Configure Toolchain and [configureKotlin] - */ -internal fun Project.configureToolChain() { - configure { - toolchain { - languageVersion.set(JavaLanguageVersion.of(17)) - } - } - - configureKotlin() -} - /** * Configure base Kotlin options */ From cde2aa2d2403588b19e5922d7298fc6314aa1108 Mon Sep 17 00:00:00 2001 From: Jaehwa Noh Date: Thu, 30 May 2024 16:33:33 +0900 Subject: [PATCH 10/13] Set toolchain 17. Change-Id: Ibd27ae52e9c6edafc654574e7ddaa8742ad69a24 --- .../com/google/samples/apps/nowinandroid/KotlinAndroid.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt index d5fac831e6..22000b6464 100644 --- a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt +++ b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt @@ -54,7 +54,7 @@ internal fun Project.configureKotlinAndroid( /** * Configure base Kotlin options */ -private inline fun Project.configureKotlin() = configure { +inline fun Project.configureKotlin() = configure { // Treat all Kotlin warnings as errors (disabled by default) // Override by setting warningsAsErrors=true in your ~/.gradle/gradle.properties val warningsAsErrors: String? by project @@ -63,7 +63,7 @@ private inline fun Project.configureKotlin is KotlinJvmProjectExtension -> compilerOptions else -> TODO("Unsupported project extension $this ${T::class}") }.apply { - jvmTarget = JvmTarget.JVM_11 + jvmToolchain(17) allWarningsAsErrors = warningsAsErrors.toBoolean() freeCompilerArgs.add( // Enable experimental coroutines APIs, including Flow From 81ae9e3ec80b1af3862da38e1133fcd538e8ffe3 Mon Sep 17 00:00:00 2001 From: Jaehwa Noh Date: Thu, 30 May 2024 17:18:03 +0900 Subject: [PATCH 11/13] Remove desugar. Change-Id: I1e1074c6e6fdfc578c82bf6263879ef9e5eb9364 --- .../google/samples/apps/nowinandroid/KotlinAndroid.kt | 9 --------- gradle/libs.versions.toml | 2 -- 2 files changed, 11 deletions(-) diff --git a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt index 22000b6464..74381e3ea8 100644 --- a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt +++ b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt @@ -20,7 +20,6 @@ import com.android.build.api.dsl.CommonExtension import org.gradle.api.Project import org.gradle.kotlin.dsl.assign import org.gradle.kotlin.dsl.configure -import org.gradle.kotlin.dsl.dependencies import org.gradle.kotlin.dsl.provideDelegate import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension @@ -38,17 +37,9 @@ internal fun Project.configureKotlinAndroid( defaultConfig { minSdk = 21 } - - compileOptions { - isCoreLibraryDesugaringEnabled = true - } } configureKotlin() - - dependencies { - add("coreLibraryDesugaring", libs.findLibrary("android.desugarJdkLibs").get()) - } } /** diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e0b938e75a..b11aa6c900 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,5 @@ [versions] accompanist = "0.34.0" -androidDesugarJdkLibs = "2.0.4" # AGP and tools should be updated together androidGradlePlugin = "8.4.0" androidTools = "31.4.0" @@ -63,7 +62,6 @@ turbine = "1.1.0" [libraries] accompanist-permissions = { group = "com.google.accompanist", name = "accompanist-permissions", version.ref = "accompanist" } -android-desugarJdkLibs = { group = "com.android.tools", name = "desugar_jdk_libs", version.ref = "androidDesugarJdkLibs" } androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "androidxActivity" } androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "androidxAppCompat" } androidx-benchmark-macro = { group = "androidx.benchmark", name = "benchmark-macro-junit4", version.ref = "androidxMacroBenchmark" } From 79e07f482697386f4bbc1839e6bb7a883656f5b7 Mon Sep 17 00:00:00 2001 From: Jaehwa Noh Date: Thu, 30 May 2024 17:44:17 +0900 Subject: [PATCH 12/13] [empty] re-run CI. Change-Id: Ieb6d9c63ad2012dde3e7280ccea25dbd80edd8e7 From b43e1c60149806b62e8207d48890738a2ee105c9 Mon Sep 17 00:00:00 2001 From: Jaehwa Noh Date: Thu, 30 May 2024 19:10:18 +0900 Subject: [PATCH 13/13] Revert "Remove desugar." This reverts commit 81ae9e3ec80b1af3862da38e1133fcd538e8ffe3. --- .../google/samples/apps/nowinandroid/KotlinAndroid.kt | 9 +++++++++ gradle/libs.versions.toml | 2 ++ 2 files changed, 11 insertions(+) diff --git a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt index 74381e3ea8..22000b6464 100644 --- a/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt +++ b/build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt @@ -20,6 +20,7 @@ import com.android.build.api.dsl.CommonExtension import org.gradle.api.Project import org.gradle.kotlin.dsl.assign import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.dependencies import org.gradle.kotlin.dsl.provideDelegate import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension @@ -37,9 +38,17 @@ internal fun Project.configureKotlinAndroid( defaultConfig { minSdk = 21 } + + compileOptions { + isCoreLibraryDesugaringEnabled = true + } } configureKotlin() + + dependencies { + add("coreLibraryDesugaring", libs.findLibrary("android.desugarJdkLibs").get()) + } } /** diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b11aa6c900..e0b938e75a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,6 @@ [versions] accompanist = "0.34.0" +androidDesugarJdkLibs = "2.0.4" # AGP and tools should be updated together androidGradlePlugin = "8.4.0" androidTools = "31.4.0" @@ -62,6 +63,7 @@ turbine = "1.1.0" [libraries] accompanist-permissions = { group = "com.google.accompanist", name = "accompanist-permissions", version.ref = "accompanist" } +android-desugarJdkLibs = { group = "com.android.tools", name = "desugar_jdk_libs", version.ref = "androidDesugarJdkLibs" } androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "androidxActivity" } androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "androidxAppCompat" } androidx-benchmark-macro = { group = "androidx.benchmark", name = "benchmark-macro-junit4", version.ref = "androidxMacroBenchmark" }