diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt index 1f9312dcf0f..a3b09b10d63 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt @@ -673,4 +673,30 @@ fun getSomething() = 10 assertFileExists("libAndroid/build/tmp/kotlin-classes/debugUnitTest/foo/PlatformTest.class") } } + + @Test + fun testDetectAndroidJava8() = with(Project("AndroidProject")) { + setupWorkingDir() + + val kotlinJvmTarget18Regex = Regex("Kotlin compiler args: .* -jvm-target 1.8") + + build(":Lib:assemble") { + assertSuccessful() + assertNotContains(kotlinJvmTarget18Regex) + } + + gradleBuildScript("Lib").appendText( + "\n" + """ + android.compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + """.trimIndent() + ) + + build(":Lib:assemble") { + assertSuccessful() + assertContainsRegex(kotlinJvmTarget18Regex) + } + } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt index 2bedb0e7553..b581897b348 100755 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt @@ -734,6 +734,10 @@ abstract class AbstractAndroidProjectHandler(private val kotlinConfigurationT } val kotlinOptions = KotlinJvmOptionsImpl() + project.whenEvaluated { + applyAndroidJavaVersion(project.extensions.getByType(BaseExtension::class.java), kotlinOptions) + } + kotlinOptions.noJdk = true ext.addExtension(KOTLIN_OPTIONS_DSL_NAME, kotlinOptions) @@ -778,6 +782,13 @@ abstract class AbstractAndroidProjectHandler(private val kotlinConfigurationT } } + private fun applyAndroidJavaVersion(baseExtension: BaseExtension, kotlinOptions: KotlinJvmOptions) { + val javaVersion = + listOf(baseExtension.compileOptions.sourceCompatibility, baseExtension.compileOptions.targetCompatibility).min()!! + if (javaVersion >= JavaVersion.VERSION_1_8) + kotlinOptions.jvmTarget = "1.8" + } + private fun processVariant( variantData: V, compilation: KotlinJvmAndroidCompilation,