Fix the AGP deprecation warning on usage of getPackageLibrary, KT-30784
Use the new API that returns the task provider, if available. Issue #KT-30784 Fixed
This commit is contained in:
+20
-5
@@ -11,8 +11,15 @@ import java.io.File
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
// TODO If we there is a way to fetch the latest Android plugin version, test against the latest version
|
||||
class KotlinAndroid32GradleIT : KotlinAndroid3GradleIT(androidGradlePluginVersion = AGPVersion.v3_2_0) {
|
||||
open class KotlinAndroid33GradleIT : KotlinAndroid32GradleIT() {
|
||||
override val androidGradlePluginVersion: AGPVersion
|
||||
get() = AGPVersion.v3_3_2
|
||||
}
|
||||
|
||||
open class KotlinAndroid32GradleIT : KotlinAndroid3GradleIT() {
|
||||
override val androidGradlePluginVersion: AGPVersion
|
||||
get() = AGPVersion.v3_2_0
|
||||
|
||||
override val defaultGradleVersion: GradleVersionRequired
|
||||
get() = GradleVersionRequired.AtLeast("4.6")
|
||||
|
||||
@@ -21,6 +28,9 @@ class KotlinAndroid32GradleIT : KotlinAndroid3GradleIT(androidGradlePluginVersio
|
||||
build("assemble", "compileDebugUnitTestJavaWithJavac", "printCompilerPluginOptions") {
|
||||
assertSuccessful()
|
||||
|
||||
// KT-30784
|
||||
assertNotContains("API 'variant.getPackageLibrary()' is obsolete and has been replaced")
|
||||
|
||||
assertContains("KT-29964 OK") // Output from lib/build.gradle
|
||||
|
||||
assertTasksExecuted(
|
||||
@@ -327,12 +337,15 @@ class KotlinAndroid32GradleIT : KotlinAndroid3GradleIT(androidGradlePluginVersio
|
||||
}
|
||||
}
|
||||
|
||||
class KotlinAndroid30GradleIT : KotlinAndroid3GradleIT(androidGradlePluginVersion = AGPVersion.v3_0_0) {
|
||||
class KotlinAndroid30GradleIT : KotlinAndroid3GradleIT() {
|
||||
override val androidGradlePluginVersion: AGPVersion
|
||||
get() = AGPVersion.v3_0_0
|
||||
|
||||
override val defaultGradleVersion: GradleVersionRequired
|
||||
get() = GradleVersionRequired.Until("4.10.2")
|
||||
}
|
||||
|
||||
abstract class KotlinAndroid3GradleIT(androidGradlePluginVersion: AGPVersion) : AbstractKotlinAndroidGradleTests(androidGradlePluginVersion) {
|
||||
abstract class KotlinAndroid3GradleIT : AbstractKotlinAndroidGradleTests() {
|
||||
@Test
|
||||
fun testApplyWithFeaturePlugin() {
|
||||
val project = Project("AndroidProject")
|
||||
@@ -361,7 +374,9 @@ abstract class KotlinAndroid3GradleIT(androidGradlePluginVersion: AGPVersion) :
|
||||
}
|
||||
}
|
||||
|
||||
abstract class AbstractKotlinAndroidGradleTests(val androidGradlePluginVersion: AGPVersion) : BaseGradleIT() {
|
||||
abstract class AbstractKotlinAndroidGradleTests : BaseGradleIT() {
|
||||
|
||||
abstract val androidGradlePluginVersion: AGPVersion
|
||||
|
||||
override fun defaultBuildOptions() =
|
||||
super.defaultBuildOptions().copy(
|
||||
|
||||
+1
-3
@@ -2,7 +2,6 @@ package org.jetbrains.kotlin.gradle.plugin
|
||||
|
||||
import com.android.build.gradle.BaseExtension
|
||||
import com.android.build.gradle.BasePlugin
|
||||
import com.android.build.gradle.api.AndroidSourceSet
|
||||
import com.android.build.gradle.api.BaseVariant
|
||||
import com.android.builder.model.SourceProvider
|
||||
import groovy.lang.Closure
|
||||
@@ -26,7 +25,6 @@ import org.gradle.api.tasks.CompileClasspathNormalizer
|
||||
import org.gradle.api.tasks.Delete
|
||||
import org.gradle.api.tasks.SourceSet
|
||||
import org.gradle.api.tasks.Upload
|
||||
import org.gradle.api.tasks.bundling.AbstractArchiveTask
|
||||
import org.gradle.api.tasks.compile.AbstractCompile
|
||||
import org.gradle.api.tasks.compile.JavaCompile
|
||||
import org.gradle.jvm.tasks.Jar
|
||||
@@ -698,7 +696,7 @@ abstract class AbstractAndroidProjectHandler<V>(private val kotlinConfigurationT
|
||||
abstract fun getVariantName(variant: V): String
|
||||
abstract fun getFlavorNames(variant: V): List<String>
|
||||
abstract fun getBuildTypeName(variant: V): String
|
||||
abstract fun getLibraryOutputTask(variant: V): AbstractArchiveTask?
|
||||
abstract fun getLibraryOutputTask(variant: V): Any?
|
||||
|
||||
protected abstract fun getSourceProviders(variantData: V): Iterable<SourceProvider>
|
||||
protected abstract fun getAllJavaSources(variantData: V): Iterable<File>
|
||||
|
||||
+15
-2
@@ -12,6 +12,7 @@ import com.android.build.gradle.tasks.MergeResources
|
||||
import com.android.builder.model.SourceProvider
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.file.FileCollection
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.gradle.api.tasks.bundling.AbstractArchiveTask
|
||||
import org.gradle.api.tasks.compile.AbstractCompile
|
||||
import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin
|
||||
@@ -21,6 +22,7 @@ import org.jetbrains.kotlin.gradle.plugin.android.AndroidGradleWrapper
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
import org.jetbrains.kotlin.gradle.utils.addExtendsFromRelation
|
||||
import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast
|
||||
import java.io.File
|
||||
import java.util.concurrent.Callable
|
||||
|
||||
@@ -126,8 +128,19 @@ class Android25ProjectHandler(
|
||||
return project.files(Callable { variantData.mergeResources?.computeResourceSetList0() ?: emptyList() })
|
||||
}
|
||||
|
||||
override fun getLibraryOutputTask(variant: BaseVariant): AbstractArchiveTask? =
|
||||
(variant as? LibraryVariant)?.packageLibrary
|
||||
// TODO the return type is actually `AbstractArchiveTask | TaskProvider<out AbstractArchiveTask>`;
|
||||
// change the signature once the Gradle versions that don't support task providers (< 4.8) are dropped
|
||||
override fun getLibraryOutputTask(variant: BaseVariant): Any? {
|
||||
val getPackageLibraryProvider = variant.javaClass.methods
|
||||
.find { it.name == "getPackageLibraryProvider" && it.parameterCount == 0 }
|
||||
|
||||
return if (getPackageLibraryProvider != null && isGradleVersionAtLeast(4, 8)) {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
getPackageLibraryProvider(variant) as TaskProvider<out AbstractArchiveTask>
|
||||
} else {
|
||||
(variant as? LibraryVariant)?.packageLibrary
|
||||
}
|
||||
}
|
||||
|
||||
override fun setUpDependencyResolution(variant: BaseVariant, compilation: KotlinJvmAndroidCompilation) {
|
||||
val project = compilation.target.project
|
||||
|
||||
+2
-2
@@ -170,14 +170,14 @@ open class KotlinAndroidTarget(
|
||||
artifactClassifier: String?
|
||||
): Set<DefaultKotlinUsageContext> {
|
||||
val variantName = getVariantName(variant)
|
||||
val outputTask = getLibraryOutputTask(variant) ?: return emptySet()
|
||||
val outputTaskOrProvider = getLibraryOutputTask(variant) ?: return emptySet()
|
||||
val artifact = run {
|
||||
val archivesConfigurationName = lowerCamelCaseName(targetName, variantName, "archives")
|
||||
project.configurations.maybeCreate(archivesConfigurationName).apply {
|
||||
isCanBeConsumed = false
|
||||
isCanBeResolved = false
|
||||
}
|
||||
project.artifacts.add(archivesConfigurationName, outputTask) { artifact ->
|
||||
project.artifacts.add(archivesConfigurationName, outputTaskOrProvider) { artifact ->
|
||||
artifact.classifier = artifactClassifier
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user