From 11ecdb590e73d9deb1b926236d43be7703daacef Mon Sep 17 00:00:00 2001 From: Tim Abil Date: Mon, 6 Apr 2026 12:37:01 -0400 Subject: [PATCH 1/2] fix: use jvmToolchain(17) to align Java and Kotlin JVM targets --- .../kotlin/AndroidApplicationConventionPlugin.kt | 8 +++----- .../main/kotlin/AndroidLibraryConventionPlugin.kt | 8 +++----- .../src/main/kotlin/KmpLibraryConventionPlugin.kt | 13 ++----------- 3 files changed, 8 insertions(+), 21 deletions(-) diff --git a/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt index d0104f1..95fbdc3 100644 --- a/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt @@ -2,8 +2,7 @@ import com.android.build.api.dsl.ApplicationExtension import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.kotlin.dsl.configure -import org.gradle.kotlin.dsl.withType -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension class AndroidApplicationConventionPlugin : Plugin { override fun apply(target: Project) { @@ -13,7 +12,8 @@ class AndroidApplicationConventionPlugin : Plugin { pluginManager.apply("librechat.mobile.detekt") pluginManager.apply("org.jetbrains.kotlinx.kover") - tasks.withType().configureEach { + extensions.configure { + jvmToolchain(17) compilerOptions { freeCompilerArgs.addAll("-opt-in=kotlin.time.ExperimentalTime") } @@ -29,8 +29,6 @@ class AndroidApplicationConventionPlugin : Plugin { testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } compileOptions { - sourceCompatibility = org.gradle.api.JavaVersion.VERSION_17 - targetCompatibility = org.gradle.api.JavaVersion.VERSION_17 isCoreLibraryDesugaringEnabled = true } lint { diff --git a/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt index e393034..fdd0bed 100644 --- a/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt @@ -2,8 +2,7 @@ import com.android.build.gradle.LibraryExtension import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.kotlin.dsl.configure -import org.gradle.kotlin.dsl.withType -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile +import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension class AndroidLibraryConventionPlugin : Plugin { override fun apply(target: Project) { @@ -13,7 +12,8 @@ class AndroidLibraryConventionPlugin : Plugin { pluginManager.apply("librechat.mobile.detekt") pluginManager.apply("org.jetbrains.kotlinx.kover") - tasks.withType().configureEach { + extensions.configure { + jvmToolchain(17) compilerOptions { freeCompilerArgs.addAll("-opt-in=kotlin.time.ExperimentalTime") } @@ -26,8 +26,6 @@ class AndroidLibraryConventionPlugin : Plugin { testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } compileOptions { - sourceCompatibility = org.gradle.api.JavaVersion.VERSION_17 - targetCompatibility = org.gradle.api.JavaVersion.VERSION_17 isCoreLibraryDesugaringEnabled = true } lint { diff --git a/build-logic/convention/src/main/kotlin/KmpLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/KmpLibraryConventionPlugin.kt index 933e249..dc1b986 100644 --- a/build-logic/convention/src/main/kotlin/KmpLibraryConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/KmpLibraryConventionPlugin.kt @@ -13,20 +13,13 @@ class KmpLibraryConventionPlugin : Plugin { pluginManager.apply("org.jetbrains.kotlinx.kover") extensions.configure { + jvmToolchain(17) compilerOptions { freeCompilerArgs.addAll( "-opt-in=kotlin.time.ExperimentalTime", ) } - androidTarget { - compilations.configureEach { - compileTaskProvider.configure { - compilerOptions { - jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17) - } - } - } - } + androidTarget() iosArm64() iosSimulatorArm64() @@ -47,8 +40,6 @@ class KmpLibraryConventionPlugin : Plugin { testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } compileOptions { - sourceCompatibility = org.gradle.api.JavaVersion.VERSION_17 - targetCompatibility = org.gradle.api.JavaVersion.VERSION_17 isCoreLibraryDesugaringEnabled = true } lint { From 08f8445ea8dedcd7dfcbaa6e8a2c418ebd3ecbcd Mon Sep 17 00:00:00 2001 From: Tim Abil Date: Mon, 6 Apr 2026 23:53:05 -0400 Subject: [PATCH 2/2] fix: bump JVM toolchain to 21 and centralize build constants Extract JVM_TOOLCHAIN_VERSION, COMPILE_SDK, MIN_SDK, and TARGET_SDK into a shared BuildConstants object so all convention plugins reference a single source of truth. --- .../src/main/kotlin/AndroidApplicationConventionPlugin.kt | 8 ++++---- .../src/main/kotlin/AndroidLibraryConventionPlugin.kt | 6 +++--- build-logic/convention/src/main/kotlin/BuildConstants.kt | 6 ++++++ .../src/main/kotlin/KmpLibraryConventionPlugin.kt | 6 +++--- 4 files changed, 16 insertions(+), 10 deletions(-) create mode 100644 build-logic/convention/src/main/kotlin/BuildConstants.kt diff --git a/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt index 95fbdc3..51b07f4 100644 --- a/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt @@ -13,17 +13,17 @@ class AndroidApplicationConventionPlugin : Plugin { pluginManager.apply("org.jetbrains.kotlinx.kover") extensions.configure { - jvmToolchain(17) + jvmToolchain(BuildConstants.JVM_TOOLCHAIN_VERSION) compilerOptions { freeCompilerArgs.addAll("-opt-in=kotlin.time.ExperimentalTime") } } extensions.configure { - compileSdk = 36 + compileSdk = BuildConstants.COMPILE_SDK defaultConfig { - minSdk = 26 - targetSdk = 35 + minSdk = BuildConstants.MIN_SDK + targetSdk = BuildConstants.TARGET_SDK versionCode = 1 versionName = "0.1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" diff --git a/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt index fdd0bed..ab9a857 100644 --- a/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt @@ -13,16 +13,16 @@ class AndroidLibraryConventionPlugin : Plugin { pluginManager.apply("org.jetbrains.kotlinx.kover") extensions.configure { - jvmToolchain(17) + jvmToolchain(BuildConstants.JVM_TOOLCHAIN_VERSION) compilerOptions { freeCompilerArgs.addAll("-opt-in=kotlin.time.ExperimentalTime") } } extensions.configure { - compileSdk = 36 + compileSdk = BuildConstants.COMPILE_SDK defaultConfig { - minSdk = 26 + minSdk = BuildConstants.MIN_SDK testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } compileOptions { diff --git a/build-logic/convention/src/main/kotlin/BuildConstants.kt b/build-logic/convention/src/main/kotlin/BuildConstants.kt new file mode 100644 index 0000000..7149457 --- /dev/null +++ b/build-logic/convention/src/main/kotlin/BuildConstants.kt @@ -0,0 +1,6 @@ +object BuildConstants { + const val JVM_TOOLCHAIN_VERSION = 21 + const val COMPILE_SDK = 36 + const val MIN_SDK = 26 + const val TARGET_SDK = 35 +} diff --git a/build-logic/convention/src/main/kotlin/KmpLibraryConventionPlugin.kt b/build-logic/convention/src/main/kotlin/KmpLibraryConventionPlugin.kt index dc1b986..a36f1c9 100644 --- a/build-logic/convention/src/main/kotlin/KmpLibraryConventionPlugin.kt +++ b/build-logic/convention/src/main/kotlin/KmpLibraryConventionPlugin.kt @@ -13,7 +13,7 @@ class KmpLibraryConventionPlugin : Plugin { pluginManager.apply("org.jetbrains.kotlinx.kover") extensions.configure { - jvmToolchain(17) + jvmToolchain(BuildConstants.JVM_TOOLCHAIN_VERSION) compilerOptions { freeCompilerArgs.addAll( "-opt-in=kotlin.time.ExperimentalTime", @@ -34,9 +34,9 @@ class KmpLibraryConventionPlugin : Plugin { } extensions.configure { - compileSdk = 36 + compileSdk = BuildConstants.COMPILE_SDK defaultConfig { - minSdk = 26 + minSdk = BuildConstants.MIN_SDK testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } compileOptions {