Plug-in Android Gradle 2.2.0 (settembre 2016)
- Dipendenze:
-
- Gradle 2.14.1 o superiore.
- Build Tools 23.0.2 o versioni successive.
- 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 ulteriori dettagli, consulta le note di rilascio di Gradle.
- Utilizzando la DSL di
externalNativeBuild {}
, Gradle ora ti consente di collegarti alle tue origini native e di compilare le librerie native utilizzando CMake o ndk-build. Dopo aver creato le librerie native, Gradle le pacchettizza 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 o gli aggiornamenti dell'SDK mancanti da cui dipende il tuo progetto. Per saperne di più, leggi Eseguire automaticamente il download dei pacchetti mancanti con Gradle.
- Una nuova funzionalità sperimentale di memorizzazione nella cache consente a Gradle di accelerare 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 Crea cache.
- Migliora le prestazioni di build adottando una nuova pipeline di pacchettizzazione predefinita che gestisce la compressione, la firma e l'allineamento della compressione in un'unica attività. Puoi
tornare a utilizzare gli strumenti di pacchettizzazione precedenti aggiungendo
android.useOldPackaging=true
al filegradle.properties
. Quando utilizzi il nuovo strumento di pacchettizzazione, l'attivitàzipalignDebug
non è disponibile. Tuttavia, puoi crearne uno autonomamente 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 rende non valide le relative firme v2 e impedisce l'installazione su un dispositivo. Per disabilitare questa funzionalità, aggiungi quanto segue al file
build.gradle
a livello di modulo:trendy
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 dell'app. Poiché il sistema Android carica prima il file DEX principale all'avvio dell'app, puoi dare la priorità a determinate classi all'avvio compilandole nel file DEX principale. Dopo aver creato un file di configurazione ProGuard specifico per il file DEX principale, passa il percorso del file di configurazione a Gradle utilizzando
buildTypes.multiDexKeepProguard
. L'utilizzo di questa DSL è diverso dall'utilizzo dibuildTypes.proguardFiles
, che fornisce regole ProGuard generali per la tua app e non specifica classi per il file DEX principale. - Aggiunge il supporto per il flag
android:extractNativeLibs
, che può ridurre le dimensioni della tua app quando la installi su un dispositivo. Quando imposti questo flag sufalse
nell'elemento<application>
del file manifest dell'app, Gradle pacchettizza versioni non compresse e allineate delle tue librerie native con il tuo APK. In questo modo,PackageManager
non potrà copiare le librerie native dall'APK nel file system del dispositivo durante l'installazione, con il vantaggio aggiuntivo di ridurre le dimensioni degli aggiornamenti delta dell'app. - Ora puoi specificare
versionNameSuffix
eapplicationIdSuffix
per i sapori dei prodotti. (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. - Prestazioni e funzionalità del compilatore Jack migliorate:
- Jack ora supporta la copertura di test Jacoco quando viene impostato
testCoverageEnabled
sutrue
. - Supporto migliorato per i processori di annotazioni. I processori di annotazione sul tuo classpath, come le eventuali dipendenze
compile
, vengono applicati automaticamente alla build. Puoi anche specificare un processore di annotazioni nella build e passare gli argomenti utilizzando la DSLjavaCompileOptions.annotationProcessorOptions {}
nel filebuild.gradle
a livello di modulo:trendy
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 lo includi nel tuo APK, utilizza l'ambito della dipendenza
annotationProcessor
:trendy
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 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 di test Jacoco quando viene impostato
- Per impostazione predefinita, se la dimensione heap del daemon Gradle è di almeno 1,5 GB, Jack ora viene eseguito nello stesso processo di Gradle. Per regolare le dimensioni dell'heap del daemon, aggiungi quanto segue al tuo
file
gradle.properties
:# This sets the daemon heap size to 1.5GB. org.gradle.jvmargs=-Xmx1536M
-