migrate AGP compile time dependency 3.6.4->7.2.1
diff --git a/libraries/tools/kotlin-gradle-plugin-api/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-api/build.gradle.kts
index 3ea3200..9cb07f1 100644
--- a/libraries/tools/kotlin-gradle-plugin-api/build.gradle.kts
+++ b/libraries/tools/kotlin-gradle-plugin-api/build.gradle.kts
@@ -10,7 +10,7 @@
commonImplementation(project(":kotlin-tooling-core"))
commonCompileOnly(project(":kotlin-gradle-compiler-types"))
- commonCompileOnly("com.android.tools.build:gradle:3.6.4") {
+ commonCompileOnly("com.android.tools.build:gradle:7.2.1") {
// Without it - Gradle dependency resolution fails with unexpected error
// Caused by: java.lang.IllegalStateException: Unexpected parent dependency id 131. Seen ids: [129, 2, 130, 9, 10, 138, 11, 139, 140, 14, 153, 154, 155, 156, 157, 158, 161, 164, 177, 178, 51, 179, 52, 180, 53, 54, 55, 183, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 195, 68, 200, 201, 202, 203, 206, 211, 212, 215, 222, 223, 224, 231, 232, 105, 233, 106, 107, 108, 109, 110, 111, 112, 113, 114, 242, 115, 243, 116, 244, 117, 118, 119, 120, 121, 122]
// at org.gradle.api.internal.artifacts.ivyservice.resolveengine.oldresult.TransientConfigurationResultsBuilder.deserialize(TransientConfigurationResultsBuilder.java:171)
diff --git a/libraries/tools/kotlin-gradle-plugin/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin/build.gradle.kts
index 1ff9fb1..494e141 100644
--- a/libraries/tools/kotlin-gradle-plugin/build.gradle.kts
+++ b/libraries/tools/kotlin-gradle-plugin/build.gradle.kts
@@ -49,14 +49,17 @@
commonCompileOnly(project(":kotlin-scripting-compiler"))
commonCompileOnly(project(":kotlin-gradle-statistics"))
commonCompileOnly(project(":kotlin-gradle-build-metrics"))
- commonCompileOnly("com.android.tools.build:gradle:3.6.4")
- commonCompileOnly("com.android.tools.build:gradle-api:3.6.4")
- commonCompileOnly("com.android.tools.build:builder:3.6.4")
+ commonCompileOnly("com.android.tools.build:gradle:7.2.1")
+ commonCompileOnly("com.android.tools.build:gradle-api:7.2.1")
+ commonCompileOnly("com.android.tools.build:builder:7.2.1")
+ commonCompileOnly("com.android.tools:common:30.2.1")
+ commonCompileOnly("org.jetbrains.kotlin:kotlin-reflect")
+ commonCompileOnly("com.android.tools:sdklib:30.2.1")
commonCompileOnly("com.android.tools.build:builder-model:3.6.4")
commonCompileOnly("org.codehaus.groovy:groovy-all:2.4.12")
commonCompileOnly(intellijCore())
commonCompileOnly(commonDependency("org.jetbrains.teamcity:serviceMessages"))
- commonCompileOnly("com.gradle:gradle-enterprise-gradle-plugin:3.11.2")
+ commonCompileOnly("com.gradle:gradle-enterprise-gradle-plugin:3.9")
commonCompileOnly(commonDependency("com.google.code.gson:gson"))
commonCompileOnly(commonDependency("com.google.guava:guava"))
commonCompileOnly("de.undercouch:gradle-download-task:4.1.1")
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidDependencyResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidDependencyResolver.kt
index 641d5b5..91a401e 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidDependencyResolver.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidDependencyResolver.kt
@@ -60,7 +60,8 @@
AndroidSdkHandler::class.java.getMethodOrNull("getInstance", androidLocationsProvider, Path::class.java) ?: return null
getInstance(null, androidLocationBuildService, androidExtension.sdkDirectory.toPath()) as AndroidSdkHandler
} else {
- AndroidSdkHandler.getInstance(androidExtension.sdkDirectory)
+ val getInstance = AndroidSdkHandler::class.java.getMethodOrNull("getInstance", File::class.java) ?: return null
+ getInstance(null, androidExtension.sdkDirectory) as AndroidSdkHandler
}
val logger = LoggerProgressIndicatorWrapper(LoggerWrapper(project.logger))
val androidTarget =
@@ -73,8 +74,9 @@
jar = (getPath(androidTarget, IAndroidTarget.ANDROID_JAR) as Path).toFile()
sources = (getPath(androidTarget, IAndroidTarget.SOURCES) as Path).toFile()
} else {
- jar = File(androidTarget.getPath(IAndroidTarget.ANDROID_JAR))
- sources = File(androidTarget.getPath(IAndroidTarget.SOURCES))
+ val getPath = IAndroidTarget::class.java.getMethodOrNull("getPath", Int::class.java) ?: return null
+ jar = File(getPath(androidTarget, IAndroidTarget.ANDROID_JAR) as String)
+ sources = File(getPath(androidTarget, IAndroidTarget.SOURCES) as String)
}
return AndroidDependency(
androidTarget.fullName,
@@ -104,7 +106,7 @@
null
}
- private fun Class<*>.getMethodOrNull(name: String, vararg parameterTypes: Class<*>) =
+ fun Class<*>.getMethodOrNull(name: String, vararg parameterTypes: Class<*>) =
try {
getMethod(name, *parameterTypes)
} catch (e: Exception) {
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidSubplugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidSubplugin.kt
index caa283e..db94aae 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidSubplugin.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidSubplugin.kt
@@ -117,7 +117,7 @@
)
kotlinCompilation.compileKotlinTaskProvider.configure {
it.androidLayoutResourceFiles.from(
- sourceSet.res.sourceDirectoryTrees.layoutDirectories
+ sourceSet.res.getSourceDirectoryTrees().layoutDirectories
)
}
}
@@ -189,7 +189,7 @@
fun addSourceSetAsVariant(name: String) {
val sourceSet = androidExtension.sourceSets.findByName(name) ?: return
- val srcDirs = sourceSet.res.sourceDirectoryTrees
+ val srcDirs = sourceSet.res.getSourceDirectoryTrees()
if (srcDirs.isNotEmpty()) {
addVariant(sourceSet.name, srcDirs)
}
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/forEachAndroidVariant.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/forEachAndroidVariant.kt
index 8930777..4cb332b 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/forEachAndroidVariant.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/utils/forEachAndroidVariant.kt
@@ -8,6 +8,8 @@
import com.android.build.gradle.*
import com.android.build.gradle.api.BaseVariant
import org.gradle.api.Project
+import org.gradle.api.internal.DefaultDomainObjectSet
+import org.jetbrains.kotlin.gradle.targets.android.internal.AndroidDependencyResolver.getMethodOrNull
internal fun Project.forAllAndroidVariants(action: (BaseVariant) -> Unit) {
val androidExtension = this.extensions.getByName("android")
@@ -16,7 +18,9 @@
is LibraryExtension -> {
androidExtension.libraryVariants.all(action)
if (androidExtension is FeatureExtension) {
- androidExtension.featureVariants.all(action)
+ val getFeature = androidExtension::class.java.getMethodOrNull("getFeatureVariants")
+ val featureVariants = getFeature?.invoke(androidExtension) as? DefaultDomainObjectSet<BaseVariant>
+ featureVariants?.all(action)
}
}