Skip to content

Commit e38e24e

Browse files
authored
Merge pull request #583 from SimonMarquis/jvmToolchain
Configure jvmToolchain for Android and Kotlin projects
2 parents ba1d9e1 + ddabba8 commit e38e24e

File tree

4 files changed

+25
-0
lines changed

4 files changed

+25
-0
lines changed

build-logic/convention/src/main/kotlin/AndroidApplicationConventionPlugin.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import com.android.build.api.dsl.ApplicationExtension
1818
import com.google.samples.apps.nowinandroid.configureGradleManagedDevices
1919
import com.android.build.api.variant.ApplicationAndroidComponentsExtension
2020
import com.google.samples.apps.nowinandroid.configureKotlinAndroid
21+
import com.google.samples.apps.nowinandroid.configureKotlinAndroidToolchain
2122
import com.google.samples.apps.nowinandroid.configurePrintApksTask
2223
import org.gradle.api.Plugin
2324
import org.gradle.api.Project
@@ -31,6 +32,7 @@ class AndroidApplicationConventionPlugin : Plugin<Project> {
3132
apply("org.jetbrains.kotlin.android")
3233
}
3334

35+
configureKotlinAndroidToolchain()
3436
extensions.configure<ApplicationExtension> {
3537
configureKotlinAndroid(this)
3638
defaultConfig.targetSdk = 33

build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import com.android.build.gradle.LibraryExtension
1919
import com.google.samples.apps.nowinandroid.configureFlavors
2020
import com.google.samples.apps.nowinandroid.configureGradleManagedDevices
2121
import com.google.samples.apps.nowinandroid.configureKotlinAndroid
22+
import com.google.samples.apps.nowinandroid.configureKotlinAndroidToolchain
2223
import com.google.samples.apps.nowinandroid.configurePrintApksTask
2324
import com.google.samples.apps.nowinandroid.disableUnnecessaryAndroidTests
2425
import org.gradle.api.Plugin
@@ -37,6 +38,7 @@ class AndroidLibraryConventionPlugin : Plugin<Project> {
3738
apply("org.jetbrains.kotlin.android")
3839
}
3940

41+
configureKotlinAndroidToolchain()
4042
extensions.configure<LibraryExtension> {
4143
configureKotlinAndroid(this)
4244
defaultConfig.targetSdk = 33

build-logic/convention/src/main/kotlin/com/google/samples/apps/nowinandroid/KotlinAndroid.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,14 @@ import com.android.build.api.dsl.CommonExtension
2020
import org.gradle.api.JavaVersion
2121
import org.gradle.api.Project
2222
import org.gradle.api.artifacts.VersionCatalogsExtension
23+
import org.gradle.api.plugins.ExtensionAware
24+
import org.gradle.kotlin.dsl.configure
2325
import org.gradle.kotlin.dsl.dependencies
2426
import org.gradle.kotlin.dsl.getByType
2527
import org.gradle.kotlin.dsl.provideDelegate
2628
import org.gradle.kotlin.dsl.withType
29+
import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension
30+
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions
2731
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
2832

2933
/**
@@ -72,3 +76,16 @@ internal fun Project.configureKotlinAndroid(
7276
add("coreLibraryDesugaring", libs.findLibrary("android.desugarJdkLibs").get())
7377
}
7478
}
79+
80+
fun CommonExtension<*, *, *, *>.kotlinOptions(block: KotlinJvmOptions.() -> Unit) {
81+
(this as ExtensionAware).extensions.configure("kotlinOptions", block)
82+
}
83+
84+
/**
85+
* Configure Kotlin's jvm toolchain for Android projects
86+
*/
87+
internal fun Project.configureKotlinAndroidToolchain() {
88+
extensions.configure<KotlinAndroidProjectExtension> {
89+
jvmToolchain(11)
90+
}
91+
}

core/model/build.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ plugins {
1818
id("kotlin")
1919
}
2020

21+
kotlin {
22+
jvmToolchain(11)
23+
}
24+
2125
dependencies {
2226
implementation(libs.kotlinx.datetime)
2327
}

0 commit comments

Comments
 (0)