diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt index 073c7f9726e..b14514e1680 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/KotlinMultiplatformPlugin.kt @@ -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().flatMap { kotlinVariant -> + val outputConfigurationsWithCompilations = target.kotlinComponents.filterIsInstance().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() + .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)