Domanda Come configurare Proguard usando Gradle?


Recentemente sono passato a Android Studio / Gradle e mi chiedo come sia possibile configurare ProGuard nello script build.gradle. Sono nuovo di Gradle, ma ho pensato che configurare l'attività Proguard sarebbe stata una buona idea (come documentato nella documentazione del progetto Proguard.

Voglio configurare Proguard per salvare la mappatura in file diversi per differenti gusti di prodotto con l'impostazione 'printmapping'

task myProguardTask(type: proguard.gradle.ProGuardTask) {
     printmapping file("test.txt")
}

ma si blocca sull'esecuzione del task con

Gradle: Execution failed for task ':module:proguardFlavorVariant'.
    > proguard.ConfigurationParser.<init>(Ljava/io/File;Ljava/util/Properties;)V

Nelle versioni più recenti del plugin 'android' di Gradle, Proguard sembra essere incluso e penso che questo potrebbe essere il motivo per cui la configurazione del task Proguard come indicato nella documentazione di Proguard non ha funzionato. Ma non ho trovato alcuna documentazione su questo argomento su come farlo con il più recente plugin per Android Gradle.

Grazie per l'aiuto!


11
2018-02-10 08:43


origine


risposte:


Proguard è integrato nel plugin Android-Gradle e non è necessario configurarlo come attività separata. I documenti sono a:

http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Running-ProGuard

I tuoi gusti sono così diversi che vuoi davvero diverse configurazioni ProGuard per loro? Nella maggior parte dei casi, penso che potresti avere una configurazione che potrebbe coprirli tutti.

MODIFICARE:

Se desideri modificare le regole di ProGuard per gusti diversi, Android Gradle DSL ti consente di farlo. L'esempio nella documentazione mostra come farlo:

android {
    buildTypes {
        release {
            // in later versions of the Gradle plugin runProguard -> minifyEnabled
            minifyEnabled true
            proguardFile getDefaultProguardFile('proguard-android.txt')
        }
    }

    productFlavors {
        flavor1 {
        }
        flavor2 {
            proguardFile 'some-other-rules.txt'
        }
    }
}

Questo dovrebbe gestire il tuo caso d'uso, a meno che tu non stia cercando un modo per farlo determinare automaticamente il valore proguardFile in base al nome del gusto senza che tu debba impostarlo manualmente; puoi farlo attraverso alcuni script Groovy personalizzati.


18
2018-02-10 17:50