Add check to verify that minifyEnabled = false configured variants

This commit is contained in:
James Hamilton
2021-05-21 17:34:45 +02:00
committed by maqsood ahmad
parent 5f69246e3a
commit 4d84aa543f
5 changed files with 77 additions and 10 deletions

View File

@@ -63,16 +63,18 @@ class AndroidPlugin(private val androidExtension: BaseExtension) : Plugin<Projec
}
when (androidExtension) {
is AppExtension -> {
androidExtension.applicationVariants.all { applicationVariant ->
collectConsumerRulesTask.dependsOn(createCollectConsumerRulesTask(
project,
applicationVariant,
createConsumerRulesConfiguration(project, applicationVariant),
File("${project.buildDir}/intermediates/proguard/configs")))
}
is AppExtension -> androidExtension.applicationVariants.all { applicationVariant ->
verifyNotMinified(applicationVariant)
collectConsumerRulesTask.dependsOn(createCollectConsumerRulesTask(
project,
applicationVariant,
createConsumerRulesConfiguration(project, applicationVariant),
File("${project.buildDir}/intermediates/proguard/configs")))
}
is LibraryExtension -> androidExtension.libraryVariants.all { libraryVariant ->
verifyNotMinified(libraryVariant)
collectConsumerRulesTask.dependsOn(createCollectConsumerRulesTask(
project,
libraryVariant,
@@ -114,6 +116,13 @@ class AndroidPlugin(private val androidExtension: BaseExtension) : Plugin<Projec
}
}
private fun verifyNotMinified(variant: BaseVariant) {
if (variant.buildType.isMinifyEnabled) {
throw GradleException(
"The option 'minifyEnabled' is set to 'true' for variant '${variant.name}', but should be 'false' for variants processed by ProGuard")
}
}
private fun copyConfigurationAttributes(destConfiguration: Configuration, srcConfiguration: Configuration) {
srcConfiguration.attributes.keySet().forEach { attribute ->
val attributeValue = srcConfiguration.attributes.getAttribute(attribute)

View File

@@ -34,8 +34,12 @@ class ConsumerRulesCollectionTest : FreeSpec({
compileSdkVersion 30
buildTypes {
release {}
debug {}
release {
minifyEnabled false
}
debug {
minifyEnabled false
}
}
}

View File

@@ -26,6 +26,12 @@ class ConsumerRulesFilterTest : FreeSpec({
}
android {
compileSdkVersion 30
buildTypes {
release {
minifyEnabled false
}
}
}
proguard {

View File

@@ -26,6 +26,12 @@ class ConfigurationTest : FreeSpec({
}
android {
compileSdkVersion 30
buildTypes {
release {
minifyEnabled false
}
}
}
proguard {
@@ -45,4 +51,40 @@ class ConfigurationTest : FreeSpec({
}
}
}
"Given a project with a configuration for a minified variant" - {
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 {
release {
defaultConfiguration 'proguard-android.txt'
}
}
}""".trimIndent()))
}.create())
"When the project is evaluated" - {
val result = createGradleRunner(project.rootDir, testKitDir).buildAndFail()
"Then the build should fail with an error message" {
result.output shouldContain "The option 'minifyEnabled' is set to 'true' for variant 'release', but should be 'false' for variants processed by ProGuard"
}
}
}
})

View File

@@ -30,6 +30,12 @@ class DefaultConfigurationTest : FreeSpec({
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
buildTypes {
release {
minifyEnabled false
}
}
}
proguard {