Plug-in Android per Gradle 2.2.0 (settembre 2016)
- Dipendenze:
- Novità:
-
- Utilizza Gradle 2.14.1, che include miglioramenti delle prestazioni e nuove funzionalità e corregge una vulnerabilità di sicurezza che consente l'escalation dei privilegi locali quando si utilizza il daemon Gradle. Per maggiori dettagli, consulta le note di rilascio di Gradle.
- Utilizzando il linguaggio specifico del dominio
externalNativeBuild {}
, Gradle ora ti consente di collegarti alle tue origini native e compilare librerie native utilizzando CMake o ndk-build. Dopo aver creato le librerie native, Gradle le inserisce nel tuo APK. Per scoprire di più sull'utilizzo di CMake e ndk-build con Gradle, leggi Aggiungere codice C e C++ al tuo progetto. - Quando esegui una build dalla riga di comando, Gradle ora tenta di scaricare automaticamente tutti i componenti SDK o gli aggiornamenti mancanti da cui dipende il tuo progetto. Per saperne di più, leggi Download automatico dei pacchetti mancanti con Gradle.
- Una nuova funzionalità di memorizzazione nella cache sperimentale consente a Gradle di velocizzare i tempi di compilazione eseguendo il pre-dexing, l'archiviazione e il riutilizzo delle versioni pre-dexed delle tue librerie. Per scoprire di più sull'utilizzo di questa funzionalità sperimentale, leggi la guida Build Cache.
- Migliora il rendimento della build adottando una nuova pipeline di packaging predefinita che gestisce la compressione, la firma e l'allineamento zip in un'unica attività. Puoi
tornare a utilizzare gli strumenti di creazione dei pacchetti precedenti aggiungendo
android.useOldPackaging=true
al tuo filegradle.properties
. Quando utilizzi il nuovo strumento di packaging, l'attivitàzipalignDebug
non è disponibile. Tuttavia, puoi crearne uno chiamando il metodocreateZipAlignTask(String taskName, File inputFile, File outputFile)
. - La firma dell'APK ora utilizza lo schema di firma dell'APK
v2 oltre alla tradizionale firma JAR. Tutte le piattaforme Android accettano gli APK risultanti. Qualsiasi modifica a questi APK dopo la firma invalida le firme v2 e impedisce l'installazione su un dispositivo. Per disattivare questa funzionalità,
aggiungi quanto segue al file
build.gradle
a livello di modulo:Groovy
android { ... signingConfigs { config { ... v2SigningEnabled false } } }
Kotlin
android { ... signingConfigs { create("config") { ... v2SigningEnabled = false } } }
- Per le build multidex, ora puoi utilizzare le regole ProGuard per determinare quali
classi Gradle deve compilare nel file DEX principale della tua app. Poiché
il sistema Android carica prima il file DEX principale all'avvio dell'app, puoi
dare la priorità a determinate classi all'avvio compilando il file DEX
principale. Dopo aver creato un file di configurazione ProGuard specifico per il tuo
file DEX principale, passa il percorso del file di configurazione a Gradle utilizzando
buildTypes.multiDexKeepProguard
. L'utilizzo di questo DSL è diverso dall'utilizzo dibuildTypes.proguardFiles
, che fornisce regole ProGuard generali per la tua app e non specifica le classi per il file DEX principale. - Aggiunge il supporto del flag
android:extractNativeLibs
, che può ridurre le dimensioni dell'app quando la installi su un dispositivo. Quando imposti questo flag sufalse
nell'elemento<application>
del file manifest dell'app, Gradle pacchettizza le versioni non compresse e allineate delle librerie native con l'APK. In questo modoPackageManager
non copia le librerie native dall'APK al file system del dispositivo durante l'installazione e ha l'ulteriore vantaggio di ridurre le dimensioni degli aggiornamenti delta dell'app. - Ora puoi specificare
versionNameSuffix
eapplicationIdSuffix
per le varianti di prodotto. (Problema 59614)
- Modifiche:
-
-
getDefaultProguardFile
ora restituisce i file ProGuard predefiniti forniti dal plug-in Android per Gradle e non utilizza più quelli nell'SDK Android. - Miglioramento delle prestazioni e delle funzionalità del compilatore Jack:
- Jack ora supporta la copertura dei test Jacoco quando imposti
testCoverageEnabled
sutrue
. - Supporto migliorato per i processori di annotazioni. I processori
di annotazioni nel classpath, ad esempio le dipendenze
compile
, vengono applicati automaticamente alla build. Puoi anche specificare un processore di annotazioni nella build e passare argomenti utilizzando il DSLjavaCompileOptions.annotationProcessorOptions {}
nel filebuild.gradle
a livello di modulo:Groovy
android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { className 'com.example.MyProcessor' // Arguments are optional. arguments = [ foo : 'bar' ] } } } }
Kotlin
android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { className = "com.example.MyProcessor" // Arguments are optional. arguments(mapOf(foo to "bar")) } } } }
Se vuoi applicare un processore di annotazioni in fase di compilazione ma non includerlo nell'APK, utilizza l'ambito della dipendenza
annotationProcessor
:Groovy
dependencies { compile 'com.google.dagger:dagger:2.0' annotationProcessor 'com.google.dagger:dagger-compiler:2.0' // or use buildVariantAnnotationProcessor to target a specific build variant }
Kotlin
dependencies { implementation("com.google.dagger:dagger:2.0") annotationProcessor("com.google.dagger:dagger-compiler:2.0") // or use buildVariantAnnotationProcessor to target a specific build variant }
- Per impostazione predefinita, se la dimensione dell'heap del daemon Gradle è di almeno 1,5 GB, Jack viene eseguito nello stesso processo di Gradle. Per regolare le dimensioni
dell'heap del demone, aggiungi quanto segue al tuo
file
gradle.properties
:# This sets the daemon heap size to 1.5GB. org.gradle.jvmargs=-Xmx1536M
Per un elenco dei parametri che puoi impostare, esegui questo comando dalla riga di comando:
java -jar /build-tools/jack.jar --help-properties
- Jack ora supporta la copertura dei test Jacoco quando imposti
-
Versione minima | Versione predefinita | Note | |
---|---|---|---|
Gradle | 2.14.1 | 2.14.1 | Per scoprire di più, consulta la sezione Aggiornare Gradle. |
Strumenti di compilazione SDK | 23.0.2 | 23.0.2 | Installa o configura gli strumenti di creazione dell'SDK. |