[Gradle] Copy user-defined attributes to android variants...
when they are grouped by flavor. In such case a different implementation of SoftwareComponents is used And originally only KotlinComponents were covered.
This commit is contained in:
+17
-7
@@ -206,18 +206,28 @@ internal fun applyUserDefinedAttributes(target: AbstractKotlinTarget) {
|
||||
project.whenEvaluated {
|
||||
// To copy the attributes to the output configurations, find those output configurations and their producing compilations
|
||||
// based on the target's components:
|
||||
val outputConfigurationsWithCompilations =
|
||||
target.kotlinComponents.filterIsInstance<KotlinVariant>().flatMap { kotlinVariant ->
|
||||
val outputConfigurationsWithCompilations = target.kotlinComponents.filterIsInstance<KotlinVariant>().flatMap { kotlinVariant ->
|
||||
kotlinVariant.usages.mapNotNull { usageContext ->
|
||||
project.configurations.findByName(usageContext.dependencyConfigurationName)?.let { configuration ->
|
||||
configuration to usageContext.compilation
|
||||
}
|
||||
}
|
||||
} + listOfNotNull(
|
||||
target.compilations.findByName(KotlinCompilation.MAIN_COMPILATION_NAME)?.let { mainCompilation ->
|
||||
project.configurations.findByName(target.defaultConfigurationName)?.to(mainCompilation)
|
||||
}
|
||||
)
|
||||
}.toMutableList()
|
||||
|
||||
val mainCompilation = target.compilations.findByName(KotlinCompilation.MAIN_COMPILATION_NAME)
|
||||
val defaultTargetConfiguration = project.configurations.findByName(target.defaultConfigurationName)
|
||||
if (mainCompilation != null && defaultTargetConfiguration != null) {
|
||||
outputConfigurationsWithCompilations += defaultTargetConfiguration to mainCompilation
|
||||
}
|
||||
|
||||
// Add usages of android library when its variants are grouped by flavor
|
||||
outputConfigurationsWithCompilations += target.kotlinComponents
|
||||
.filterIsInstance<JointAndroidKotlinTargetComponent>()
|
||||
.flatMap { variant -> variant.usages }
|
||||
.mapNotNull { usage ->
|
||||
val configuration = project.configurations.findByName(usage.dependencyConfigurationName) ?: return@mapNotNull null
|
||||
configuration to usage.compilation
|
||||
}
|
||||
|
||||
outputConfigurationsWithCompilations.forEach { (configuration, compilation) ->
|
||||
copyAttributes(compilation.attributes, configuration.attributes)
|
||||
|
||||
Reference in New Issue
Block a user