Eugen Martynov
07/22/2024, 4:03 PMmbonnin
07/22/2024, 4:04 PMmbonnin
07/22/2024, 4:04 PMEugen Martynov
07/22/2024, 4:05 PMmbonnin
07/22/2024, 4:07 PMEugen Martynov
07/22/2024, 4:07 PMEugen Martynov
07/22/2024, 4:09 PMCannot inline bytecode built with JVM target 22 into bytecode that is being built with JVM target 17. Please specify proper '-jvm-target' option.
Eugen Martynov
07/22/2024, 4:09 PMmbonnin
07/22/2024, 4:10 PMEugen Martynov
07/22/2024, 4:10 PMmbonnin
07/22/2024, 4:10 PMmbonnin
07/22/2024, 4:10 PMandroid {
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "17"
}
}
Eugen Martynov
07/22/2024, 4:10 PMEugen Martynov
07/22/2024, 4:10 PMmbonnin
07/22/2024, 4:11 PMEugen Martynov
07/22/2024, 4:12 PMEugen Martynov
07/22/2024, 4:13 PMinternal fun Project.configureKotlin() {
tasks.withType<KotlinCompile>().configureEach {
compilerOptions {
jvmTarget.set(JvmTarget.fromTarget(libs.versions.project.java.get()))
}
}
}
mbonnin
07/22/2024, 4:13 PMEugen Martynov
07/22/2024, 4:14 PMcontext(Project)
internal fun CommonExtension<*, *, *, *, *, *>.withCommonAndroidConfiguration() {
buildToolsVersion = libs.versions.project.buildTools.get()
compileSdk = libs.versions.project.compileSdk.get().toInt()
defaultConfig {
minSdk = libs.versions.project.minSdk.get().toInt()
}
compileOptions {
val javaVersion = JavaVersion.toVersion(libs.versions.project.java.get().toInt())
sourceCompatibility = javaVersion
targetCompatibility = javaVersion
}
}
mbonnin
07/22/2024, 4:14 PMandroid {
kotlinOptions {
jvmTarget = "17"
}
}
tapchicoma
07/22/2024, 4:24 PMEugen Martynov
07/22/2024, 4:31 PMEugen Martynov
07/22/2024, 4:32 PMEugen Martynov
07/22/2024, 4:32 PMtapchicoma
07/22/2024, 4:32 PMEugen Martynov
07/22/2024, 4:32 PMEugen Martynov
07/22/2024, 4:32 PMtapchicoma
07/22/2024, 4:33 PMEugen Martynov
07/22/2024, 4:33 PMEugen Martynov
07/24/2024, 3:14 PMEugen Martynov
07/24/2024, 3:15 PMEugen Martynov
07/29/2024, 11:09 AMkotlinOptions {
jvmTarget = "17"
}
then I don't see error. But not sure why
tasks.withType<KotlinCompile>().configureEach {
compilerOptions {
jvmTarget.set(JvmTarget.fromTarget(libs.versions.project.java.get()))
}
}
Is not samembonnin
07/29/2024, 11:15 AMEugen Martynov
07/29/2024, 11:23 AMCommonExtension
and there is not kotlinOptions
. When I try to see where is kotlinOptions
defiled - it is a extension method of com.android.build.gradle.LibraryExtension
. But I can not use com.android.build.gradle.LibraryExtension.kotlinOptions
in the convention plugin.mbonnin
07/29/2024, 12:06 PMif (extension is LibraryExtension) {
kotlinOptions { ... }
}
Eugen Martynov
07/29/2024, 2:39 PMpluginManager.applyAndConfigure(libs.plugins.android.library) {
extensions.configure<LibraryExtension> {
kotlinOptions {...}
gives Unresolved reference: kotlinOptions
Eugen Martynov
07/29/2024, 2:39 PMEugen Martynov
07/29/2024, 2:41 PMthis
is LibraryExtension
Eugen Martynov
07/29/2024, 2:47 PMpackage org.gradle.kotlin.dsl
public fun com.android.build.gradle.LibraryExtension.kotlinOptions(configure: org.gradle.api.Action<org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions>): kotlin.Unit { /* compiled code */ }
But if I try in convention plugin to write import import org.gradle.kotlin.dsl.kotlinOptions
that is not known. Maybe it is a java code and I should reference it differently.mbonnin
07/29/2024, 2:50 PMandroid {
(this as ExtensionAware).extensions.getByName("kotlinOptions").let {
// stuff
}
}
mbonnin
07/29/2024, 2:51 PMEugen Martynov
07/29/2024, 2:52 PMmbonnin
07/29/2024, 2:57 PMmbonnin
07/29/2024, 2:57 PM(this as ExtensionAware).extensions.getByName("kotlinOptions").let {
this as KotlinJvmOptions
}
mbonnin
07/29/2024, 2:59 PMmbonnin
07/29/2024, 3:00 PMEugen Martynov
07/29/2024, 3:00 PMEugen Martynov
07/29/2024, 3:01 PMEugen Martynov
07/29/2024, 4:06 PMpluginManager.applyAndConfigure(libs.plugins.kotlin.android) {
extensions.configure<KotlinAndroidProjectExtension> {
compilerOptions {
jvmTarget.set(JvmTarget.fromTarget(libs.versions.project.java.get()))
}
}
}