[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.targets.jvm.KotlinJvmTarget
|
||||||
import org.jetbrains.kotlin.gradle.tasks.*
|
import org.jetbrains.kotlin.gradle.tasks.*
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
|
import org.jetbrains.kotlin.gradle.tooling.includeKotlinToolingMetadataInApk
|
||||||
import org.jetbrains.kotlin.gradle.utils.*
|
import org.jetbrains.kotlin.gradle.utils.*
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.net.URL
|
import java.net.URL
|
||||||
@@ -839,6 +840,8 @@ abstract class AbstractAndroidProjectHandler(private val kotlinConfigurationTool
|
|||||||
|
|
||||||
addKotlinDependenciesToAndroidSourceSets(project, kotlinAndroidTarget)
|
addKotlinDependenciesToAndroidSourceSets(project, kotlinAndroidTarget)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
project.includeKotlinToolingMetadataInApk()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+1
-1
@@ -52,7 +52,7 @@ private fun createRootPublication(project: Project, publishing: PublishingExtens
|
|||||||
private fun MavenPublication.addKotlinToolingMetadataArtifactIfNeeded(project: Project) {
|
private fun MavenPublication.addKotlinToolingMetadataArtifactIfNeeded(project: Project) {
|
||||||
val buildKotlinToolingMetadataTask = project.buildKotlinToolingMetadataTask ?: return
|
val buildKotlinToolingMetadataTask = project.buildKotlinToolingMetadataTask ?: return
|
||||||
|
|
||||||
artifact(buildKotlinToolingMetadataTask.flatMap { it.outputFile }) { artifact ->
|
artifact(buildKotlinToolingMetadataTask.map { it.outputFile }) { artifact ->
|
||||||
artifact.classifier = "kotlin-tooling-metadata"
|
artifact.classifier = "kotlin-tooling-metadata"
|
||||||
artifact.builtBy(buildKotlinToolingMetadataTask)
|
artifact.builtBy(buildKotlinToolingMetadataTask)
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-5
@@ -9,7 +9,6 @@ import com.android.build.gradle.BaseExtension
|
|||||||
import org.gradle.api.DefaultTask
|
import org.gradle.api.DefaultTask
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.internal.GeneratedSubclass
|
import org.gradle.api.internal.GeneratedSubclass
|
||||||
import org.gradle.api.provider.Property
|
|
||||||
import org.gradle.api.tasks.*
|
import org.gradle.api.tasks.*
|
||||||
import org.jetbrains.kotlin.compilerRunner.konanVersion
|
import org.jetbrains.kotlin.compilerRunner.konanVersion
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
||||||
@@ -55,9 +54,11 @@ abstract class BuildKotlinToolingMetadataTask : DefaultTask() {
|
|||||||
const val defaultTaskName: String = "buildKotlinToolingMetadata"
|
const val defaultTaskName: String = "buildKotlinToolingMetadata"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@get:OutputDirectory
|
||||||
|
val outputDirectory: File = project.buildDir.resolve("kotlinToolingMetadata")
|
||||||
|
|
||||||
@get:OutputFile
|
@get:OutputFile
|
||||||
val outputFile: Property<File> = project.objects.property(File::class.java)
|
val outputFile: File = outputDirectory.resolve("kotlin-tooling-metadata.json")
|
||||||
.convention(project.buildDir.resolve("kotlinToolingMetadata").resolve("kotlin-tooling-metadata.json"))
|
|
||||||
|
|
||||||
@get:Internal
|
@get:Internal
|
||||||
internal val kotlinToolingMetadata by lazy {
|
internal val kotlinToolingMetadata by lazy {
|
||||||
@@ -70,8 +71,7 @@ abstract class BuildKotlinToolingMetadataTask : DefaultTask() {
|
|||||||
|
|
||||||
@TaskAction
|
@TaskAction
|
||||||
internal fun createToolingMetadataFile() {
|
internal fun createToolingMetadataFile() {
|
||||||
val outputFile = outputFile.orNull ?: return
|
outputDirectory.mkdirs()
|
||||||
outputFile.parentFile.mkdirs()
|
|
||||||
outputFile.writeText(kotlinToolingMetadataJson)
|
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