[Gradle] Workaround KT-55222 via reflection to make the project compilable
This commit is contained in:
committed by
Space Team
parent
9bbdee7817
commit
b7ebe77399
+9
-2
@@ -33,6 +33,8 @@ import org.gradle.api.services.BuildService
|
|||||||
import org.gradle.api.services.BuildServiceParameters
|
import org.gradle.api.services.BuildServiceParameters
|
||||||
import org.gradle.api.services.BuildServiceRegistry
|
import org.gradle.api.services.BuildServiceRegistry
|
||||||
import org.gradle.internal.component.model.AttributeConfigurationSelector
|
import org.gradle.internal.component.model.AttributeConfigurationSelector
|
||||||
|
import org.gradle.internal.component.model.ConfigurationMetadata
|
||||||
|
import org.gradle.internal.component.model.IvyArtifactName
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.internal
|
import org.jetbrains.kotlin.gradle.plugin.mpp.internal
|
||||||
import org.jetbrains.kotlin.gradle.plugin.sources.android.findKotlinSourceSet
|
import org.jetbrains.kotlin.gradle.plugin.sources.android.findKotlinSourceSet
|
||||||
import org.jetbrains.kotlin.gradle.plugin.sources.internal
|
import org.jetbrains.kotlin.gradle.plugin.sources.internal
|
||||||
@@ -40,6 +42,8 @@ import org.jetbrains.kotlin.gradle.utils.forAllAndroidVariants
|
|||||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
|
import kotlin.reflect.KFunction
|
||||||
|
import kotlin.reflect.full.staticFunctions
|
||||||
|
|
||||||
data class AndroidDependency(
|
data class AndroidDependency(
|
||||||
val name: String? = null,
|
val name: String? = null,
|
||||||
@@ -290,12 +294,15 @@ object AndroidDependencyResolver {
|
|||||||
val rootComponentMetaData = (projectDependency.findProjectConfiguration() as? ConfigurationInternal)?.toRootComponentMetaData()
|
val rootComponentMetaData = (projectDependency.findProjectConfiguration() as? ConfigurationInternal)?.toRootComponentMetaData()
|
||||||
?: return@mapNotNull null
|
?: return@mapNotNull null
|
||||||
|
|
||||||
val matching = AttributeConfigurationSelector.selectConfigurationUsingAttributeMatching(
|
@Suppress("UNCHECKED_CAST") val selectConfiguration =
|
||||||
|
AttributeConfigurationSelector::class.staticFunctions.find { it.name == "selectConfigurationUsingAttributeMatching" } as? KFunction<ConfigurationMetadata>
|
||||||
|
?: error("Static method AttributeConfigurationSelector.selectConfigurationUsingAttributeMatching does not exist")
|
||||||
|
val matching = selectConfiguration.call(
|
||||||
(attributes as? AttributeContainerInternal)?.asImmutable() ?: return@mapNotNull null,
|
(attributes as? AttributeContainerInternal)?.asImmutable() ?: return@mapNotNull null,
|
||||||
emptyList<Capability>(),
|
emptyList<Capability>(),
|
||||||
rootComponentMetaData,
|
rootComponentMetaData,
|
||||||
(attributesSchema as? AttributesSchemaInternal) ?: return@mapNotNull null,
|
(attributesSchema as? AttributesSchemaInternal) ?: return@mapNotNull null,
|
||||||
emptyList()
|
emptyList<IvyArtifactName>()
|
||||||
)
|
)
|
||||||
projectDependency.dependencyProject.configurations.findByName(matching.name)
|
projectDependency.dependencyProject.configurations.findByName(matching.name)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user