[Gradle] [Android] Include kotlin-tooling-metadata.json in apk artifact
^KT-48019 Verification Pending
This commit is contained in:
committed by
Space
parent
a22ef02e47
commit
82a70a205b
+3
@@ -44,6 +44,7 @@ import org.jetbrains.kotlin.gradle.targets.js.jsPluginDeprecationMessage
|
||||
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
|
||||
import org.jetbrains.kotlin.gradle.tasks.*
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
import org.jetbrains.kotlin.gradle.tooling.includeKotlinToolingMetadataInApk
|
||||
import org.jetbrains.kotlin.gradle.utils.*
|
||||
import java.io.File
|
||||
import java.net.URL
|
||||
@@ -839,6 +840,8 @@ abstract class AbstractAndroidProjectHandler(private val kotlinConfigurationTool
|
||||
|
||||
addKotlinDependenciesToAndroidSourceSets(project, kotlinAndroidTarget)
|
||||
}
|
||||
|
||||
project.includeKotlinToolingMetadataInApk()
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
@@ -52,7 +52,7 @@ private fun createRootPublication(project: Project, publishing: PublishingExtens
|
||||
private fun MavenPublication.addKotlinToolingMetadataArtifactIfNeeded(project: Project) {
|
||||
val buildKotlinToolingMetadataTask = project.buildKotlinToolingMetadataTask ?: return
|
||||
|
||||
artifact(buildKotlinToolingMetadataTask.flatMap { it.outputFile }) { artifact ->
|
||||
artifact(buildKotlinToolingMetadataTask.map { it.outputFile }) { artifact ->
|
||||
artifact.classifier = "kotlin-tooling-metadata"
|
||||
artifact.builtBy(buildKotlinToolingMetadataTask)
|
||||
}
|
||||
|
||||
+5
-5
@@ -9,7 +9,6 @@ import com.android.build.gradle.BaseExtension
|
||||
import org.gradle.api.DefaultTask
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.internal.GeneratedSubclass
|
||||
import org.gradle.api.provider.Property
|
||||
import org.gradle.api.tasks.*
|
||||
import org.jetbrains.kotlin.compilerRunner.konanVersion
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
||||
@@ -55,9 +54,11 @@ abstract class BuildKotlinToolingMetadataTask : DefaultTask() {
|
||||
const val defaultTaskName: String = "buildKotlinToolingMetadata"
|
||||
}
|
||||
|
||||
@get:OutputDirectory
|
||||
val outputDirectory: File = project.buildDir.resolve("kotlinToolingMetadata")
|
||||
|
||||
@get:OutputFile
|
||||
val outputFile: Property<File> = project.objects.property(File::class.java)
|
||||
.convention(project.buildDir.resolve("kotlinToolingMetadata").resolve("kotlin-tooling-metadata.json"))
|
||||
val outputFile: File = outputDirectory.resolve("kotlin-tooling-metadata.json")
|
||||
|
||||
@get:Internal
|
||||
internal val kotlinToolingMetadata by lazy {
|
||||
@@ -70,8 +71,7 @@ abstract class BuildKotlinToolingMetadataTask : DefaultTask() {
|
||||
|
||||
@TaskAction
|
||||
internal fun createToolingMetadataFile() {
|
||||
val outputFile = outputFile.orNull ?: return
|
||||
outputFile.parentFile.mkdirs()
|
||||
outputDirectory.mkdirs()
|
||||
outputFile.writeText(kotlinToolingMetadataJson)
|
||||
}
|
||||
}
|
||||
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.gradle.tooling
|
||||
|
||||
import com.android.build.gradle.AppExtension
|
||||
import org.gradle.api.Project
|
||||
|
||||
internal fun Project.includeKotlinToolingMetadataInApk() {
|
||||
plugins.withId("com.android.application") {
|
||||
val buildKotlinToolingMetadataTask = buildKotlinToolingMetadataTask ?: return@withId
|
||||
val android = project.extensions.getByName("android") as AppExtension
|
||||
android.applicationVariants.configureEach { variant ->
|
||||
variant.registerPostJavacGeneratedBytecode(
|
||||
files(buildKotlinToolingMetadataTask.map { it.outputDirectory })
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user