diff --git a/gradle-plugin/src/main/kotlin/proguard/gradle/plugin/android/AndroidPlugin.kt b/gradle-plugin/src/main/kotlin/proguard/gradle/plugin/android/AndroidPlugin.kt index b43d25a9..d951c0a6 100644 --- a/gradle-plugin/src/main/kotlin/proguard/gradle/plugin/android/AndroidPlugin.kt +++ b/gradle-plugin/src/main/kotlin/proguard/gradle/plugin/android/AndroidPlugin.kt @@ -63,23 +63,40 @@ class AndroidPlugin(private val androidExtension: BaseExtension) : Plugin() + + when (androidExtension) { + is AppExtension -> androidExtension.applicationVariants.all { applicationVariant -> + setupVariant(proguardBlock, applicationVariant, collectConsumerRulesTask, project)?.let { + matchedConfigurations.add(it) + } + } + is LibraryExtension -> androidExtension.libraryVariants.all { libraryVariant -> + setupVariant(proguardBlock, libraryVariant, collectConsumerRulesTask, project)?.let { + matchedConfigurations.add(it) + } + } + } + proguardBlock.configurations.forEach { checkConfigurationFile(project, it.configurations) } - when (androidExtension) { - is AppExtension -> androidExtension.applicationVariants.all { applicationVariant -> - setupVariant(proguardBlock, applicationVariant, collectConsumerRulesTask, project) - } - is LibraryExtension -> androidExtension.libraryVariants.all { libraryVariant -> - setupVariant(proguardBlock, libraryVariant, collectConsumerRulesTask, project) + (proguardBlock.configurations - matchedConfigurations).apply { + if (isNotEmpty()) when (size) { + 1 -> throw GradleException("The configured variant '${first().name}' does not exist") + else -> throw GradleException("The configured variants ${joinToString(separator = "', '", prefix = "'", postfix = "'") { it.name }} do not exist") } } } } - private fun setupVariant(proguardBlock: ProGuardAndroidExtension, variant: BaseVariant, collectConsumerRulesTask: TaskProvider, project: Project) { - if (proguardBlock.configurations.hasVariantConfiguration(variant.name)) { + private fun setupVariant(proguardBlock: ProGuardAndroidExtension, variant: BaseVariant, collectConsumerRulesTask: TaskProvider, project: Project): VariantConfiguration? { + val matchingConfiguration = proguardBlock.configurations.findVariantConfiguration(variant.name) + if (matchingConfiguration != null) { verifyNotMinified(variant) collectConsumerRulesTask.dependsOn(createCollectConsumerRulesTask( @@ -88,6 +105,7 @@ class AndroidPlugin(private val androidExtension: BaseExtension) : Plugin