[Gradle] Suppress usages of Android deprecated types in AndroidProjectHandler
^KT-56904 In Progress
This commit is contained in:
committed by
Space Team
parent
145876a235
commit
3130775a3b
+46
-29
@@ -9,7 +9,6 @@ package org.jetbrains.kotlin.gradle.plugin
|
|||||||
import com.android.build.api.attributes.BuildTypeAttr
|
import com.android.build.api.attributes.BuildTypeAttr
|
||||||
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.*
|
|
||||||
import org.gradle.api.InvalidUserCodeException
|
import org.gradle.api.InvalidUserCodeException
|
||||||
import org.gradle.api.NamedDomainObjectCollection
|
import org.gradle.api.NamedDomainObjectCollection
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
@@ -115,7 +114,7 @@ internal class AndroidProjectHandler(
|
|||||||
*/
|
*/
|
||||||
private fun addKotlinDependenciesToAndroidSourceSets(project: Project) {
|
private fun addKotlinDependenciesToAndroidSourceSets(project: Project) {
|
||||||
fun addDependenciesToAndroidSourceSet(
|
fun addDependenciesToAndroidSourceSet(
|
||||||
androidSourceSet: AndroidSourceSet,
|
@Suppress("TYPEALIAS_EXPANSION_DEPRECATION") androidSourceSet: DeprecatedAndroidSourceSet,
|
||||||
apiConfigurationName: String,
|
apiConfigurationName: String,
|
||||||
implementationConfigurationName: String,
|
implementationConfigurationName: String,
|
||||||
compileOnlyConfigurationName: String,
|
compileOnlyConfigurationName: String,
|
||||||
@@ -159,7 +158,8 @@ internal class AndroidProjectHandler(
|
|||||||
task.dependsOn(project.provider {
|
task.dependsOn(project.provider {
|
||||||
val androidUnitTestTasks = mutableListOf<Any>()
|
val androidUnitTestTasks = mutableListOf<Any>()
|
||||||
project.forAllAndroidVariants { variant ->
|
project.forAllAndroidVariants { variant ->
|
||||||
if (variant is UnitTestVariant) {
|
@Suppress("TYPEALIAS_EXPANSION_DEPRECATION")
|
||||||
|
if (variant is DeprecatedAndroidUnitTestVariant) {
|
||||||
// There's no API for getting the Android unit test tasks from the variant, so match them by name:
|
// There's no API for getting the Android unit test tasks from the variant, so match them by name:
|
||||||
androidUnitTestTasks.add(project.provider {
|
androidUnitTestTasks.add(project.provider {
|
||||||
project.tasks.matching { it.name == lowerCamelCaseName("test", variant.name) }
|
project.tasks.matching { it.name == lowerCamelCaseName("test", variant.name) }
|
||||||
@@ -172,7 +172,7 @@ internal class AndroidProjectHandler(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun preprocessVariant(
|
private fun preprocessVariant(
|
||||||
variantData: BaseVariant,
|
@Suppress("TYPEALIAS_EXPANSION_DEPRECATION") variantData: DeprecatedAndroidBaseVariant,
|
||||||
compilation: KotlinJvmAndroidCompilation,
|
compilation: KotlinJvmAndroidCompilation,
|
||||||
project: Project,
|
project: Project,
|
||||||
tasksProvider: KotlinTasksProvider
|
tasksProvider: KotlinTasksProvider
|
||||||
@@ -218,7 +218,7 @@ internal class AndroidProjectHandler(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun postprocessVariant(
|
private fun postprocessVariant(
|
||||||
variantData: BaseVariant,
|
@Suppress("TYPEALIAS_EXPANSION_DEPRECATION") variantData: DeprecatedAndroidBaseVariant,
|
||||||
compilation: KotlinJvmAndroidCompilation,
|
compilation: KotlinJvmAndroidCompilation,
|
||||||
project: Project,
|
project: Project,
|
||||||
androidExt: BaseExtension,
|
androidExt: BaseExtension,
|
||||||
@@ -247,7 +247,7 @@ internal class AndroidProjectHandler(
|
|||||||
compilation: KotlinJvmAndroidCompilation,
|
compilation: KotlinJvmAndroidCompilation,
|
||||||
androidPlugin: BasePlugin,
|
androidPlugin: BasePlugin,
|
||||||
androidExt: BaseExtension,
|
androidExt: BaseExtension,
|
||||||
variantData: BaseVariant,
|
@Suppress("TYPEALIAS_EXPANSION_DEPRECATION") variantData: DeprecatedAndroidBaseVariant,
|
||||||
javaTask: TaskProvider<out AbstractCompile>,
|
javaTask: TaskProvider<out AbstractCompile>,
|
||||||
kotlinTask: TaskProvider<out KotlinCompile>
|
kotlinTask: TaskProvider<out KotlinCompile>
|
||||||
) {
|
) {
|
||||||
@@ -303,13 +303,19 @@ internal class AndroidProjectHandler(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getFlavorNames(variant: BaseVariant): List<String> = variant.productFlavors.map { it.name }
|
fun getFlavorNames(
|
||||||
|
@Suppress("TYPEALIAS_EXPANSION_DEPRECATION") variant: DeprecatedAndroidBaseVariant
|
||||||
|
): List<String> = variant.productFlavors.map { it.name }
|
||||||
|
|
||||||
fun getBuildTypeName(variant: BaseVariant): String = variant.buildType.name
|
fun getBuildTypeName(
|
||||||
|
@Suppress("TYPEALIAS_EXPANSION_DEPRECATION") variant: DeprecatedAndroidBaseVariant
|
||||||
|
): String = variant.buildType.name
|
||||||
|
|
||||||
// TODO the return type is actually `AbstractArchiveTask | TaskProvider<out AbstractArchiveTask>`;
|
// TODO the return type is actually `AbstractArchiveTask | TaskProvider<out AbstractArchiveTask>`;
|
||||||
// change the signature once the Android Gradle plugin versions that don't support task providers are dropped
|
// change the signature once the Android Gradle plugin versions that don't support task providers are dropped
|
||||||
fun getLibraryOutputTask(variant: BaseVariant): Any? {
|
fun getLibraryOutputTask(
|
||||||
|
@Suppress("TYPEALIAS_EXPANSION_DEPRECATION") variant: DeprecatedAndroidBaseVariant
|
||||||
|
): Any? {
|
||||||
val getPackageLibraryProvider = variant.javaClass.methods
|
val getPackageLibraryProvider = variant.javaClass.methods
|
||||||
.find { it.name == "getPackageLibraryProvider" && it.parameterCount == 0 }
|
.find { it.name == "getPackageLibraryProvider" && it.parameterCount == 0 }
|
||||||
|
|
||||||
@@ -317,11 +323,15 @@ internal class AndroidProjectHandler(
|
|||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
getPackageLibraryProvider(variant) as TaskProvider<out AbstractArchiveTask>
|
getPackageLibraryProvider(variant) as TaskProvider<out AbstractArchiveTask>
|
||||||
} else {
|
} else {
|
||||||
(variant as? LibraryVariant)?.packageLibrary
|
@Suppress("TYPEALIAS_EXPANSION_DEPRECATION")
|
||||||
|
(variant as? DeprecatedAndroidLibraryVariant)?.packageLibrary
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setUpDependencyResolution(variant: BaseVariant, compilation: KotlinJvmAndroidCompilation) {
|
fun setUpDependencyResolution(
|
||||||
|
@Suppress("TYPEALIAS_EXPANSION_DEPRECATION") variant: DeprecatedAndroidBaseVariant,
|
||||||
|
compilation: KotlinJvmAndroidCompilation
|
||||||
|
) {
|
||||||
val project = compilation.target.project
|
val project = compilation.target.project
|
||||||
|
|
||||||
compilation.compileDependencyFiles = variant.compileConfiguration.apply {
|
compilation.compileDependencyFiles = variant.compileConfiguration.apply {
|
||||||
@@ -362,16 +372,21 @@ internal class AndroidProjectHandler(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun getTestedVariantData(variantData: BaseVariant): BaseVariant? = when (variantData) {
|
@Suppress("TYPEALIAS_EXPANSION_DEPRECATION")
|
||||||
is TestVariant -> variantData.testedVariant
|
internal fun getTestedVariantData(
|
||||||
is UnitTestVariant -> variantData.testedVariant as? BaseVariant
|
variantData: DeprecatedAndroidBaseVariant
|
||||||
|
): DeprecatedAndroidBaseVariant? = when (variantData) {
|
||||||
|
is DeprecatedAndroidTestVariant -> variantData.testedVariant
|
||||||
|
is DeprecatedAndroidUnitTestVariant -> variantData.testedVariant as? DeprecatedAndroidBaseVariant
|
||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun getVariantName(variant: BaseVariant): String = variant.name
|
internal fun getVariantName(
|
||||||
|
@Suppress("TYPEALIAS_EXPANSION_DEPRECATION") variant: DeprecatedAndroidBaseVariant
|
||||||
|
): String = variant.name
|
||||||
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST", "TYPEALIAS_EXPANSION_DEPRECATION")
|
||||||
internal fun BaseVariant.getJavaTaskProvider(): TaskProvider<out JavaCompile> =
|
internal fun DeprecatedAndroidBaseVariant.getJavaTaskProvider(): TaskProvider<out JavaCompile> =
|
||||||
this::class.java.methods.firstOrNull { it.name == "getJavaCompileProvider" }
|
this::class.java.methods.firstOrNull { it.name == "getJavaCompileProvider" }
|
||||||
?.invoke(this) as? TaskProvider<JavaCompile>
|
?.invoke(this) as? TaskProvider<JavaCompile>
|
||||||
?: @Suppress("DEPRECATION") javaCompile.thisTaskProvider
|
?: @Suppress("DEPRECATION") javaCompile.thisTaskProvider
|
||||||
@@ -390,7 +405,8 @@ class AndroidTestedVariantArtifactsFilter(
|
|||||||
private fun initFilteredFiles(): Lazy<Set<File>> {
|
private fun initFilteredFiles(): Lazy<Set<File>> {
|
||||||
return lazy {
|
return lazy {
|
||||||
artifactCollection.filter {
|
artifactCollection.filter {
|
||||||
it.id.componentIdentifier is TestedComponentIdentifier ||
|
@Suppress("TYPEALIAS_EXPANSION_DEPRECATION")
|
||||||
|
it.id.componentIdentifier is DeprecatedAndroidTestedComponentIdentifier ||
|
||||||
// If tests depend on the main classes transitively, through a test dependency on another module which
|
// If tests depend on the main classes transitively, through a test dependency on another module which
|
||||||
// depends on this module, then there's no artifact with a TestedComponentIdentifier, so consider the artifact of the
|
// depends on this module, then there's no artifact with a TestedComponentIdentifier, so consider the artifact of the
|
||||||
// current module a friend path, too:
|
// current module a friend path, too:
|
||||||
@@ -415,21 +431,22 @@ class AndroidTestedVariantArtifactsFilter(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal inline fun BaseVariant.forEachKotlinSourceSet(
|
@Suppress("TYPEALIAS_EXPANSION_DEPRECATION")
|
||||||
|
internal inline fun DeprecatedAndroidBaseVariant.forEachKotlinSourceSet(
|
||||||
project: Project, action: (KotlinSourceSet) -> Unit
|
project: Project, action: (KotlinSourceSet) -> Unit
|
||||||
) {
|
) = sourceSets.forEach { provider ->
|
||||||
sourceSets
|
action(project.findKotlinSourceSet(provider) ?: return@forEach)
|
||||||
.forEach { provider -> action(project.findKotlinSourceSet(provider) ?: return@forEach) }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal inline fun BaseVariant.forEachKotlinSourceDirectorySet(
|
@Suppress("TYPEALIAS_EXPANSION_DEPRECATION")
|
||||||
|
internal inline fun DeprecatedAndroidBaseVariant.forEachKotlinSourceDirectorySet(
|
||||||
project: Project, action: (SourceDirectorySet) -> Unit
|
project: Project, action: (SourceDirectorySet) -> Unit
|
||||||
) {
|
) = sourceSets.forEach { androidSourceSet ->
|
||||||
sourceSets
|
action(project.findKotlinSourceSet(androidSourceSet)?.kotlin ?: return@forEach)
|
||||||
.forEach { androidSourceSet -> action(project.findKotlinSourceSet(androidSourceSet)?.kotlin ?: return@forEach) }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal inline fun BaseVariant.forEachJavaSourceDir(action: (ConfigurableFileTree) -> Unit) {
|
@Suppress("TYPEALIAS_EXPANSION_DEPRECATION")
|
||||||
getSourceFolders(SourceKind.JAVA).forEach(action)
|
internal inline fun DeprecatedAndroidBaseVariant.forEachJavaSourceDir(
|
||||||
}
|
action: (ConfigurableFileTree) -> Unit
|
||||||
|
) = getSourceFolders(DeprecatedAndroidSourceKind.JAVA).forEach(action)
|
||||||
|
|
||||||
|
|||||||
+4
@@ -9,4 +9,8 @@ package org.jetbrains.kotlin.gradle.utils
|
|||||||
|
|
||||||
internal typealias DeprecatedAndroidSourceSet = com.android.build.gradle.api.AndroidSourceSet
|
internal typealias DeprecatedAndroidSourceSet = com.android.build.gradle.api.AndroidSourceSet
|
||||||
internal typealias DeprecatedAndroidBaseVariant = com.android.build.gradle.api.BaseVariant
|
internal typealias DeprecatedAndroidBaseVariant = com.android.build.gradle.api.BaseVariant
|
||||||
|
internal typealias DeprecatedAndroidLibraryVariant = com.android.build.gradle.api.LibraryVariant
|
||||||
|
internal typealias DeprecatedAndroidTestVariant = com.android.build.gradle.api.TestVariant
|
||||||
|
internal typealias DeprecatedAndroidUnitTestVariant = com.android.build.gradle.api.UnitTestVariant
|
||||||
internal typealias DeprecatedAndroidSourceKind = com.android.build.gradle.api.SourceKind
|
internal typealias DeprecatedAndroidSourceKind = com.android.build.gradle.api.SourceKind
|
||||||
|
internal typealias DeprecatedAndroidTestedComponentIdentifier = com.android.build.gradle.api.TestedComponentIdentifier
|
||||||
|
|||||||
Reference in New Issue
Block a user