[Gradle] [Android] Only bundle kotlin tooling metadata for non debuggable variants
^KT-48019
This commit is contained in:
committed by
Space
parent
79565da904
commit
e897c60ef1
+16
-7
@@ -12,6 +12,7 @@ import java.io.File
|
|||||||
import java.util.zip.ZipFile
|
import java.util.zip.ZipFile
|
||||||
import kotlin.test.assertEquals
|
import kotlin.test.assertEquals
|
||||||
import kotlin.test.assertNotNull
|
import kotlin.test.assertNotNull
|
||||||
|
import kotlin.test.assertNull
|
||||||
import kotlin.test.assertTrue
|
import kotlin.test.assertTrue
|
||||||
|
|
||||||
open class KotlinAndroid36GradleIT : KotlinAndroid34GradleIT() {
|
open class KotlinAndroid36GradleIT : KotlinAndroid34GradleIT() {
|
||||||
@@ -433,17 +434,25 @@ open class KotlinAndroid36GradleIT : KotlinAndroid34GradleIT() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `test KotlinToolingMetadataArtifact is bundled into apk`(): Unit = with(Project("kotlinToolingMetadataAndroid")) {
|
fun `test KotlinToolingMetadataArtifact is bundled into apk`(): Unit = with(Project("kotlinToolingMetadataAndroid")) {
|
||||||
build("assemble") {
|
build("assembleDebug") {
|
||||||
|
assertSuccessful()
|
||||||
|
assertTasksNotExecuted(":${BuildKotlinToolingMetadataTask.defaultTaskName}")
|
||||||
|
|
||||||
|
val debugApk = project.projectDir.resolve("build/outputs/apk/debug/project-debug.apk")
|
||||||
|
assertTrue(debugApk.exists(), "Missing debug apk ${debugApk.path}")
|
||||||
|
ZipFile(debugApk).use { zip ->
|
||||||
|
assertNull(zip.getEntry("kotlin-tooling-metadata.json"), "Expected metadata *not* being packaged into debug apk")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
build("assembleRelease") {
|
||||||
assertSuccessful()
|
assertSuccessful()
|
||||||
assertTasksExecuted(":${BuildKotlinToolingMetadataTask.defaultTaskName}")
|
assertTasksExecuted(":${BuildKotlinToolingMetadataTask.defaultTaskName}")
|
||||||
val debugApk = project.projectDir.resolve("build/outputs/apk/debug/project-debug.apk")
|
|
||||||
val releaseApk = project.projectDir.resolve("build/outputs/apk/release/project-release-unsigned.apk")
|
val releaseApk = project.projectDir.resolve("build/outputs/apk/release/project-release-unsigned.apk")
|
||||||
|
|
||||||
listOf(debugApk, releaseApk).forEach { apk ->
|
assertTrue(releaseApk.exists(), "Missing release apk ${releaseApk.path}")
|
||||||
assertTrue(apk.exists(), "Missing apk ${apk.path}")
|
ZipFile(releaseApk).use { zip ->
|
||||||
ZipFile(apk).use { zip ->
|
assertNotNull(zip.getEntry("kotlin-tooling-metadata.json"), "Expected metadata being packaged into release apk")
|
||||||
assertNotNull(zip.getEntry("kotlin-tooling-metadata.json"), "Expected metadata being packaged into apk")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-3
@@ -13,9 +13,11 @@ internal fun Project.includeKotlinToolingMetadataInApk() {
|
|||||||
val buildKotlinToolingMetadataTask = buildKotlinToolingMetadataTask ?: return@withId
|
val buildKotlinToolingMetadataTask = buildKotlinToolingMetadataTask ?: return@withId
|
||||||
val android = project.extensions.getByName("android") as AppExtension
|
val android = project.extensions.getByName("android") as AppExtension
|
||||||
android.applicationVariants.configureEach { variant ->
|
android.applicationVariants.configureEach { variant ->
|
||||||
variant.registerPostJavacGeneratedBytecode(
|
if (!variant.buildType.isDebuggable) {
|
||||||
files(buildKotlinToolingMetadataTask.map { it.outputDirectory })
|
variant.registerPostJavacGeneratedBytecode(
|
||||||
)
|
files(buildKotlinToolingMetadataTask.map { it.outputDirectory })
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user