Fix minifyEnabled = true check that checked all variants

This commit is contained in:
James Hamilton
2021-05-21 18:16:55 +02:00
committed by maqsood ahmad
parent 8b1bd44bca
commit 465304515b
3 changed files with 53 additions and 7 deletions

View File

@@ -21,6 +21,7 @@
package proguard.gradle.plugin.android
import com.android.build.api.variant.VariantInfo
import com.android.build.gradle.AppExtension
import com.android.build.gradle.BaseExtension
import com.android.build.gradle.LibraryExtension
@@ -36,6 +37,7 @@ import org.gradle.api.tasks.TaskProvider
import proguard.gradle.plugin.android.AndroidProjectType.ANDROID_APPLICATION
import proguard.gradle.plugin.android.AndroidProjectType.ANDROID_LIBRARY
import proguard.gradle.plugin.android.dsl.ProGuardAndroidExtension
import proguard.gradle.plugin.android.dsl.VariantConfiguration
import proguard.gradle.plugin.android.tasks.CollectConsumerRulesTask
import proguard.gradle.plugin.android.transforms.AndroidConsumerRulesTransform
import proguard.gradle.plugin.android.transforms.ArchiveConsumerRulesTransform
@@ -64,7 +66,8 @@ class AndroidPlugin(private val androidExtension: BaseExtension) : Plugin<Projec
when (androidExtension) {
is AppExtension -> androidExtension.applicationVariants.all { applicationVariant ->
verifyNotMinified(applicationVariant)
if (proguardBlock.configurations.hasVariantConfiguration(applicationVariant.name))
verifyNotMinified(applicationVariant)
collectConsumerRulesTask.dependsOn(createCollectConsumerRulesTask(
project,
@@ -73,7 +76,8 @@ class AndroidPlugin(private val androidExtension: BaseExtension) : Plugin<Projec
File("${project.buildDir}/intermediates/proguard/configs")))
}
is LibraryExtension -> androidExtension.libraryVariants.all { libraryVariant ->
verifyNotMinified(libraryVariant)
if (proguardBlock.configurations.hasVariantConfiguration(libraryVariant.name))
verifyNotMinified(libraryVariant)
collectConsumerRulesTask.dependsOn(createCollectConsumerRulesTask(
project,
@@ -158,3 +162,12 @@ enum class AndroidProjectType {
ANDROID_APPLICATION,
ANDROID_LIBRARY;
}
fun Iterable<VariantConfiguration>.findVariantConfiguration(variant: VariantInfo) =
find { it.name == variant.fullVariantName } ?: find { it.name == variant.buildTypeName }
fun Iterable<VariantConfiguration>.findVariantConfiguration(variantName: String) =
find { it.name == variantName } ?: find { variantName.endsWith(it.name.capitalize()) }
fun Iterable<VariantConfiguration>.hasVariantConfiguration(variantName: String) =
this.findVariantConfiguration(variantName) != null

View File

@@ -137,8 +137,3 @@ class ProGuardTransform(
typealias ProGuardIOEntry = Pair<File, File>
private fun Iterable<VariantConfiguration>.findVariantConfiguration(variant: VariantInfo) =
find { it.name == variant.fullVariantName } ?: find { it.name == variant.buildTypeName }
private fun Iterable<VariantConfiguration>.findVariantConfiguration(variantName: String) =
find { it.name == variantName } ?: find { variantName.endsWith(it.name.capitalize()) }

View File

@@ -8,7 +8,9 @@
package proguard.gradle.plugin.android.dsl
import io.kotest.core.spec.style.FreeSpec
import io.kotest.matchers.shouldBe
import io.kotest.matchers.string.shouldContain
import org.gradle.testkit.runner.TaskOutcome
import testutils.AndroidProject
import testutils.applicationModule
import testutils.createGradleRunner
@@ -52,6 +54,42 @@ class ConfigurationTest : FreeSpec({
}
}
"Given a project with a configuration for a minified variant that is not configured" - {
val project = autoClose(AndroidProject().apply {
addModule(applicationModule("app", buildDotGradle = """
plugins {
id 'com.android.application'
id 'proguard'
}
android {
compileSdkVersion 30
buildTypes {
release {
minifyEnabled true
}
}
}
proguard {
configurations {
debug {
defaultConfiguration 'proguard-android-debug.txt'
}
}
}""".trimIndent()))
}.create())
"When the project is evaluated" - {
val result = createGradleRunner(project.rootDir, testKitDir, "assemble").build()
"Then the build should succeed" {
result.task(":app:assemble")?.outcome shouldBe TaskOutcome.SUCCESS
}
}
}
"Given a project with a configuration for a minified variant" - {
val project = autoClose(AndroidProject().apply {
addModule(applicationModule("app", buildDotGradle = """