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.assertEquals
|
||||||
import kotlin.test.assertTrue
|
import kotlin.test.assertTrue
|
||||||
|
|
||||||
// TODO If we there is a way to fetch the latest Android plugin version, test against the latest version
|
open class KotlinAndroid33GradleIT : KotlinAndroid32GradleIT() {
|
||||||
class KotlinAndroid32GradleIT : KotlinAndroid3GradleIT(androidGradlePluginVersion = AGPVersion.v3_2_0) {
|
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
|
override val defaultGradleVersion: GradleVersionRequired
|
||||||
get() = GradleVersionRequired.AtLeast("4.6")
|
get() = GradleVersionRequired.AtLeast("4.6")
|
||||||
|
|
||||||
@@ -21,6 +28,9 @@ class KotlinAndroid32GradleIT : KotlinAndroid3GradleIT(androidGradlePluginVersio
|
|||||||
build("assemble", "compileDebugUnitTestJavaWithJavac", "printCompilerPluginOptions") {
|
build("assemble", "compileDebugUnitTestJavaWithJavac", "printCompilerPluginOptions") {
|
||||||
assertSuccessful()
|
assertSuccessful()
|
||||||
|
|
||||||
|
// KT-30784
|
||||||
|
assertNotContains("API 'variant.getPackageLibrary()' is obsolete and has been replaced")
|
||||||
|
|
||||||
assertContains("KT-29964 OK") // Output from lib/build.gradle
|
assertContains("KT-29964 OK") // Output from lib/build.gradle
|
||||||
|
|
||||||
assertTasksExecuted(
|
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
|
override val defaultGradleVersion: GradleVersionRequired
|
||||||
get() = GradleVersionRequired.Until("4.10.2")
|
get() = GradleVersionRequired.Until("4.10.2")
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class KotlinAndroid3GradleIT(androidGradlePluginVersion: AGPVersion) : AbstractKotlinAndroidGradleTests(androidGradlePluginVersion) {
|
abstract class KotlinAndroid3GradleIT : AbstractKotlinAndroidGradleTests() {
|
||||||
@Test
|
@Test
|
||||||
fun testApplyWithFeaturePlugin() {
|
fun testApplyWithFeaturePlugin() {
|
||||||
val project = Project("AndroidProject")
|
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() =
|
override fun defaultBuildOptions() =
|
||||||
super.defaultBuildOptions().copy(
|
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.BaseExtension
|
||||||
import com.android.build.gradle.BasePlugin
|
import com.android.build.gradle.BasePlugin
|
||||||
import com.android.build.gradle.api.AndroidSourceSet
|
|
||||||
import com.android.build.gradle.api.BaseVariant
|
import com.android.build.gradle.api.BaseVariant
|
||||||
import com.android.builder.model.SourceProvider
|
import com.android.builder.model.SourceProvider
|
||||||
import groovy.lang.Closure
|
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.Delete
|
||||||
import org.gradle.api.tasks.SourceSet
|
import org.gradle.api.tasks.SourceSet
|
||||||
import org.gradle.api.tasks.Upload
|
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.AbstractCompile
|
||||||
import org.gradle.api.tasks.compile.JavaCompile
|
import org.gradle.api.tasks.compile.JavaCompile
|
||||||
import org.gradle.jvm.tasks.Jar
|
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 getVariantName(variant: V): String
|
||||||
abstract fun getFlavorNames(variant: V): List<String>
|
abstract fun getFlavorNames(variant: V): List<String>
|
||||||
abstract fun getBuildTypeName(variant: V): 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 getSourceProviders(variantData: V): Iterable<SourceProvider>
|
||||||
protected abstract fun getAllJavaSources(variantData: V): Iterable<File>
|
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 com.android.builder.model.SourceProvider
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.file.FileCollection
|
import org.gradle.api.file.FileCollection
|
||||||
|
import org.gradle.api.tasks.TaskProvider
|
||||||
import org.gradle.api.tasks.bundling.AbstractArchiveTask
|
import org.gradle.api.tasks.bundling.AbstractArchiveTask
|
||||||
import org.gradle.api.tasks.compile.AbstractCompile
|
import org.gradle.api.tasks.compile.AbstractCompile
|
||||||
import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin
|
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.plugin.mpp.KotlinJvmAndroidCompilation
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
import org.jetbrains.kotlin.gradle.utils.addExtendsFromRelation
|
import org.jetbrains.kotlin.gradle.utils.addExtendsFromRelation
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.concurrent.Callable
|
import java.util.concurrent.Callable
|
||||||
|
|
||||||
@@ -126,8 +128,19 @@ class Android25ProjectHandler(
|
|||||||
return project.files(Callable { variantData.mergeResources?.computeResourceSetList0() ?: emptyList() })
|
return project.files(Callable { variantData.mergeResources?.computeResourceSetList0() ?: emptyList() })
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getLibraryOutputTask(variant: BaseVariant): AbstractArchiveTask? =
|
// TODO the return type is actually `AbstractArchiveTask | TaskProvider<out AbstractArchiveTask>`;
|
||||||
(variant as? LibraryVariant)?.packageLibrary
|
// 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) {
|
override fun setUpDependencyResolution(variant: BaseVariant, compilation: KotlinJvmAndroidCompilation) {
|
||||||
val project = compilation.target.project
|
val project = compilation.target.project
|
||||||
|
|||||||
+2
-2
@@ -170,14 +170,14 @@ open class KotlinAndroidTarget(
|
|||||||
artifactClassifier: String?
|
artifactClassifier: String?
|
||||||
): Set<DefaultKotlinUsageContext> {
|
): Set<DefaultKotlinUsageContext> {
|
||||||
val variantName = getVariantName(variant)
|
val variantName = getVariantName(variant)
|
||||||
val outputTask = getLibraryOutputTask(variant) ?: return emptySet()
|
val outputTaskOrProvider = getLibraryOutputTask(variant) ?: return emptySet()
|
||||||
val artifact = run {
|
val artifact = run {
|
||||||
val archivesConfigurationName = lowerCamelCaseName(targetName, variantName, "archives")
|
val archivesConfigurationName = lowerCamelCaseName(targetName, variantName, "archives")
|
||||||
project.configurations.maybeCreate(archivesConfigurationName).apply {
|
project.configurations.maybeCreate(archivesConfigurationName).apply {
|
||||||
isCanBeConsumed = false
|
isCanBeConsumed = false
|
||||||
isCanBeResolved = false
|
isCanBeResolved = false
|
||||||
}
|
}
|
||||||
project.artifacts.add(archivesConfigurationName, outputTask) { artifact ->
|
project.artifacts.add(archivesConfigurationName, outputTaskOrProvider) { artifact ->
|
||||||
artifact.classifier = artifactClassifier
|
artifact.classifier = artifactClassifier
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user