12

ich sehe, dass das Android-Plugin für Gradle eine minifyEnabled Eigenschaft sowie eine useProguard Eigenschaft hat, wie folgt:Was ist der Unterschied zwischen "minifyEnabled" und "useProguard" im Android Plugin für Gradle?

android { 
    buildTypes { 
     debug { 
      minifyEnabled true 
      useProguard false 
     } 
     release { 
      minifyEnabled true 
      useProguard true 
     } 
    } 
} 

Was zwischen diesen beiden Eigenschaften ist der Unterschied? Oder, was ist die Bedeutung von jedem?

+1

könnte man darüber lesen Sie hier http://tools.android.com/tech-docs/new-build-system/resource-shrinking –

+0

Dieses Dokument (zum Zeitpunkt dieser Kommentar schreiben) nichts über die enthält 'useProguard' Eigenschaft @ cricket_007. Es sei denn, 'usseProguard' ist eine Umbenennung der 'shrinkResources'-Eigenschaft in den letzten Versionen des Android Plugins für Gradle? –

+0

"Ressourcenschrumpfung funktioniert nur in Verbindung mit Code schrumpfen (wie ProGuard)" –

Antwort

23

Zitiert aus tools.android.com:

Built-in shrinker

Version 2.0 von Android Plugin für Gradle Schiffe mit einem experimentellen integrierten Code shrinker, die anstelle von ProGuard verwendet werden kann. Der integrierte Schrumpfer unterstützt schnelle inkrementelle Läufe und soll die Iterationszyklen beschleunigen.

android { 
    buildTypes { 
     debug { 
      minifyEnabled true 
      useProguard false 
      proguardFiles getDefaultProguardFile('proguard-android.txt') 
     } 
    } 
} 

Das eingebaute in shrinker nur entfernen kann toten Code, es nicht verschleiern oder optimieren: Es kann mit dem folgenden Code-Schnipsel aktiviert werden. Es kann mit denselben Dateien wie ProGuard konfiguriert werden, ignoriert jedoch alle Flags, die sich auf die Verschleierung beziehen, oder Optimierung.

Im Gegensatz zu ProGuard, unterstützen wir die Verwendung des eingebauten in shrinker zusammen mit Instant-Run: je nach Projekt, es deutlich die anfängliche Build verringern und Zeit installieren. Alle Methoden, die nach einer Codeänderung erreichbar sind werden als neu zum Programm hinzugefügt und verhindern eine Instant Run-Hotswap.

+0

Vielen Dank @Mattia. Das erklärt es. 'MinifyEnabled' entfernt also toten Code, verschleiert ihn aber nicht und optimiert ihn nicht. –

+1

Scheint direkt dieser Antwort zu widersprechen, die besagt, dass minify ein bisschen verschleiert https://stackoverflow.com/questions/17290023/obfuscation-in-android-studio – pete

+0

aktualisiert Link zur Dokumentation: https://developer.android. com/studio/build/shrink-code.html #gradle-shrinker – mxttie