2016-05-03 33 views
12

Vedo che il plugin di Android per Gradle ha una proprietà minifyEnabled così come una proprietà useProguard, come segue:Qual è la differenza tra "minifyEnabled" e "useProguard" nel plugin Android per Gradle?

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

Qual è la differenza tra queste due proprietà? O, piuttosto, qual è il significato di ciascuno?

+1

Si potrebbe leggere su di esso qui http://tools.android.com/tech-docs/new-build-system/resource-shrinking –

+0

Tale documento (al momento della stesura di questo commento) contiene nulla circa la Proprietà 'useProguard' @ cricket_007. A meno che useProguard' non rinomini la proprietà 'shrinkResources' nelle recenti versioni del plugin Android per Gradle? –

+0

"il restringimento delle risorse funziona solo in combinazione con la riduzione del codice (come ProGuard)" –

risposta

23

Citando tools.android.com:

incorporato shrinker

versione 2.0 del plugin di Android per le navi Gradle con uno sperimentale incorporato nel codice strizzacervelli, che può essere usato al posto di ProGuard. Il Shrinker integrato supporta corse incrementali veloci e ha lo scopo di velocizzare i cicli di iterazione . Può essere attivata utilizzando il seguente codice frammento:

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

Lo shrinker incorporato può rimuovere solo codice morto, non offuscare o ottimizzare. Può essere configurato utilizzando gli stessi file di ProGuard, ma ignorerà tutti i flag relativi all'offuscamento o all'ottimizzazione .

differenza ProGuard, sosteniamo utilizzando lo strizzacervelli built-in insieme a Immediata Run: a seconda del progetto, può ridurre in modo significativo la build iniziale e momento dell'installazione. Qualsiasi metodo divenuto raggiungibile dopo la modifica del codice verrà visualizzato come appena aggiunto al programma e impedirà l'esecuzione immediata di hotswap.

+0

Grazie mille @Mattia. Questo lo spiega. Quindi 'minifyEnabled' rimuove il codice morto ma non lo offusca o non lo ottimizza. –

+1

Sembra contraddire direttamente questa risposta che sta dicendo che minify nasconde un po 'https://stackoverflow.com/questions/17290023/obfuscation-in-android-studio – pete

+0

link aggiornato alla documentazione: https://developer.android. com/studio/build/shrink-code.html # gradle-shrinker – mxttie