2015-10-01 7 views
19

build.gradle all'interno possiamo aggiungere che paramsQual è il livello di: incremental, preDexLibraries, jumboMode, all'interno di dexOptions?

android { 
    dexOptions { 
     incremental 
     preDexLibraries 
     jumboMode 
     javaMaxHeapSize 
    } 
} 

ma la documentazione è troppo bassa

http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.DexOptions.html#com.android.build.gradle.internal.dsl.DexOptions

booleano incrementale

se attivare la modalità incrementale per dx. Questo ha molte limitazioni e potrebbe non funzionare. Usare con attenzione.

jumboMode booleano

attivare la modalità jumbo a dx (--force-jumbo).

preDexLibraries booleani

librerie Sia pre-Dex. Questo può migliorare le build incrementali, ma le build pulite potrebbero essere più lente.

1) quali limitazioni sono incrementali?

2) che cos'è la modalità jumbo?

3) che cosa sono le librerie di pre-dex?

+1

Possibile duplicato di [come posso utilizzare Android dexOptions?] (http://stackoverflow.com/questions/28927255/how-can-i-use-android-dexoptions) –

+0

domanda modificata – Xan

risposta

11

prima di tutto vediamo cosa è il file dex. in puro java quando si compila il codice java, verrà compilato in un file .class mentre in Android il codice java verrà compilato nel file .dex. (entrambi sono bytecode ma diversi)

incremental: significa che Gradle utilizzerà il file dex precedente e aggiungerà le nuove modifiche (non costruendole di nuovo ogni volta).

la risposta del primo Q: ad es. una delle limitazioni era che non si poteva usare insieme a multidex * (sebbene questa limitazione fosse risolta - per le versioni di sdk 21+ sono possibili build incrementali per apk multidex ricostruendo solo i file dex interessati)

-note: non serve preoccuparsi di questo limitazioni più perché l'opzione incrementale è vero per default a partire dalla versione 2.1.0 Gradle

: questa opzione significa la compilazione di codice Java in file di Dex multiplo non avete bisogno di questo a meno che i vostri metodi di codice sono più numerosi la limitazione massima su un singolo dex file (64k metodi)

jumboMode (la risposta di il secondo Q): esiste anche una limitazione per il conteggio delle stringhe nel file dex che abilita questa opzione estenderà il conteggio delle stringhe nel file dex (questa opzione è vera dal Gradle 2.1.0 quindi non devi preoccuparti neanche di questo)

preDexLibraries (la risposta del vostro terzo Q): costruisce il file dex di librerie in modo che possa essere utilizzato in incrementale costruisce (non costruire i file DEX ogni volta per le librerie). quindi usare questo oggetto quando la costruzione pulita rende tutto un po 'più lento.

+0

riassumendo: con Gradle 2.1.0 o versioni successive non è necessario impostare nessuno di questi parametri per accelerare la build – Xan

+1

Non vero per multidex e predexLibraries. Questi due non sono vere di defualt. Ogni caratteristica che vuole essere aggiunta per default al gradle in primo luogo viene aggiunta come funzione di incubazione (significa che puoi usarli ma non sono stabili e potrebbero avere problemi). Ma dopo alcune versioni esce dallo stato di incubazione e diventa predefinito. –

+0

multidex non è in discussione perché il significato è chiaro – Xan