KMA-271 Android dependencies are not imported with AGP 7
This commit is contained in:
committed by
Space
parent
29787218e1
commit
5530080a7d
+22
-2
@@ -29,6 +29,9 @@ import org.gradle.api.internal.artifacts.dependencies.ProjectDependencyInternal
|
|||||||
import org.gradle.api.internal.attributes.AttributeContainerInternal
|
import org.gradle.api.internal.attributes.AttributeContainerInternal
|
||||||
import org.gradle.api.internal.attributes.AttributesSchemaInternal
|
import org.gradle.api.internal.attributes.AttributesSchemaInternal
|
||||||
import org.gradle.api.provider.Provider
|
import org.gradle.api.provider.Provider
|
||||||
|
import org.gradle.api.services.BuildService
|
||||||
|
import org.gradle.api.services.BuildServiceParameters
|
||||||
|
import org.gradle.api.services.BuildServiceRegistry
|
||||||
import org.gradle.internal.component.model.AttributeConfigurationSelector
|
import org.gradle.internal.component.model.AttributeConfigurationSelector
|
||||||
import org.jetbrains.kotlin.gradle.plugin.forEachVariant
|
import org.jetbrains.kotlin.gradle.plugin.forEachVariant
|
||||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||||
@@ -51,8 +54,11 @@ object AndroidDependencyResolver {
|
|||||||
val useNioPath = versions[0].toInt() >= 7
|
val useNioPath = versions[0].toInt() >= 7
|
||||||
|
|
||||||
val sdkHandler = if (useNioPath) {
|
val sdkHandler = if (useNioPath) {
|
||||||
val getInstance = AndroidSdkHandler::class.java.getMethodOrNull("getInstance", Path::class.java) ?: return null
|
val androidLocationBuildService = getAndroidLocationBuildService(project) ?: return null
|
||||||
getInstance(null, androidExtension.sdkDirectory.toPath()) as AndroidSdkHandler
|
val androidLocationsProvider = getClassOrNull("com.android.prefs.AndroidLocationsProvider") ?: return null
|
||||||
|
val getInstance =
|
||||||
|
AndroidSdkHandler::class.java.getMethodOrNull("getInstance", androidLocationsProvider, Path::class.java) ?: return null
|
||||||
|
getInstance(null, androidLocationBuildService, androidExtension.sdkDirectory.toPath()) as AndroidSdkHandler
|
||||||
} else {
|
} else {
|
||||||
AndroidSdkHandler.getInstance(androidExtension.sdkDirectory)
|
AndroidSdkHandler.getInstance(androidExtension.sdkDirectory)
|
||||||
}
|
}
|
||||||
@@ -77,6 +83,20 @@ object AndroidDependencyResolver {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getAndroidLocationBuildService(project: Project): BuildService<BuildServiceParameters.None>? =
|
||||||
|
getClassOrNull("com.android.build.gradle.internal.services.BuildServicesKt")?.let { buildServices ->
|
||||||
|
getClassOrNull("com.android.build.gradle.internal.services.AndroidLocationsBuildService")?.let { androidLocationsService ->
|
||||||
|
val getBuildService =
|
||||||
|
buildServices.getMethodOrNull("getBuildService", BuildServiceRegistry::class.java, androidLocationsService.javaClass)
|
||||||
|
@Suppress("UNCHECKED_CAST")
|
||||||
|
(getBuildService?.invoke(
|
||||||
|
null,
|
||||||
|
project.gradle.sharedServices,
|
||||||
|
androidLocationsService
|
||||||
|
) as Provider<BuildService<BuildServiceParameters.None>>?)?.get()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun getClassOrNull(s: String) =
|
private fun getClassOrNull(s: String) =
|
||||||
try {
|
try {
|
||||||
Class.forName(s)
|
Class.forName(s)
|
||||||
|
|||||||
Reference in New Issue
Block a user