[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 {
|
project.whenEvaluated {
|
||||||
// To copy the attributes to the output configurations, find those output configurations and their producing compilations
|
// To copy the attributes to the output configurations, find those output configurations and their producing compilations
|
||||||
// based on the target's components:
|
// based on the target's components:
|
||||||
val outputConfigurationsWithCompilations =
|
val outputConfigurationsWithCompilations = target.kotlinComponents.filterIsInstance<KotlinVariant>().flatMap { kotlinVariant ->
|
||||||
target.kotlinComponents.filterIsInstance<KotlinVariant>().flatMap { kotlinVariant ->
|
|
||||||
kotlinVariant.usages.mapNotNull { usageContext ->
|
kotlinVariant.usages.mapNotNull { usageContext ->
|
||||||
project.configurations.findByName(usageContext.dependencyConfigurationName)?.let { configuration ->
|
project.configurations.findByName(usageContext.dependencyConfigurationName)?.let { configuration ->
|
||||||
configuration to usageContext.compilation
|
configuration to usageContext.compilation
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} + listOfNotNull(
|
}.toMutableList()
|
||||||
target.compilations.findByName(KotlinCompilation.MAIN_COMPILATION_NAME)?.let { mainCompilation ->
|
|
||||||
project.configurations.findByName(target.defaultConfigurationName)?.to(mainCompilation)
|
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) ->
|
outputConfigurationsWithCompilations.forEach { (configuration, compilation) ->
|
||||||
copyAttributes(compilation.attributes, configuration.attributes)
|
copyAttributes(compilation.attributes, configuration.attributes)
|
||||||
|
|||||||
Reference in New Issue
Block a user