Plug-in Android per Gradle 2.2.0 (settembre 2016)
- Dipendenze:
- Novità:
-
- Utilizzo di 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 la DSL
externalNativeBuild {}, Gradle ora ti consente di collegarti alle origini native e compilare le librerie native utilizzando CMake o ndk-build. Dopo aver creato le librerie native, Gradle le inserisce nel pacchetto APK. Per saperne di più sull'utilizzo di CMake e ndk-build con Gradle, consulta Aggiungere codice C e C++ al 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ù, consulta Scaricare automaticamente i pacchetti mancanti con Gradle.
- Una nuova funzionalità di memorizzazione nella cache sperimentale consente a Gradle di velocizzare i tempi di build eseguendo il pre-dexing, l'archiviazione e il riutilizzo delle versioni pre-dexed delle librerie. Per saperne di più sull'utilizzo di questa funzionalità sperimentale, consulta la guida alla cache di build.
- Miglioramento delle prestazioni di build grazie all'adozione di una nuova pipeline di packaging predefinita che gestisce la compressione, la firma e l'allineamento di zipalign in un'unica attività. Puoi ripristinare l'utilizzo degli strumenti di packaging precedenti aggiungendo
android.useOldPackaging=trueal filegradle.properties. Quando utilizzi il nuovo strumento di packaging, l'attivitàzipalignDebugnon è disponibile. Tuttavia, puoi crearne una chiamando ilcreateZipAlignTask(String taskName, File inputFile, File outputFile)metodo. - La firma dell'APK ora utilizza lo schema di firma dell'APK
v2 oltre alla firma JAR tradizionale. 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.gradlea livello di modulo:Alla moda
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 che 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 tuo file DEX principale, passa il percorso del file di configurazione a Gradle utilizzando
buildTypes.multiDexKeepProguard. L'utilizzo di questa DSL è diverso dall'utilizzobuildTypes.proguardFiles, che fornisce regole ProGuard generali per l'app e non specifica le classi per il file DEX principale. - Aggiunta del supporto per il flag
android:extractNativeLibs, che può ridurre le dimensioni dell'app quando la installi su un dispositivo. Quando imposti questo flag sufalsenell'elemento<application>del file manifest dell'app, Gradle inserisce nel pacchetto APK le versioni non compresse e allineate delle librerie native. In questo modo,PackageManagernon copia le librerie native dall'APK al file system del dispositivo durante l'installazione e, inoltre, gli aggiornamenti delta dell'app sono più piccoli. - Ora puoi specificare
versionNameSuffixeapplicationIdSuffixper le varianti di prodotto. (Problema 59614)
- Modifiche:
-
-
getDefaultProguardFileora 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
testCoverageEnabledsutrue. - Miglioramento del supporto per i processori di annotazione. I processori di annotazione nel classpath, ad esempio le dipendenze
compile, vengono applicati automaticamente alla build. Puoi anche specificare un processore di annotazione nella build e passare gli argomenti utilizzando lajavaCompileOptions.annotationProcessorOptions {}DSL nel filebuild.gradlea livello di modulo:Alla moda
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 annotazione in fase di compilazione, ma non includerlo nell'APK, utilizza l'ambito della
annotationProcessordipendenza:Alla moda
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 le dimensioni dell'heap del daemon Gradle sono 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 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 il seguente 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 saperne di più, consulta la sezione Aggiornare Gradle. |
| Strumenti di build dell'SDK | 23.0.2 | 23.0.2 | Installa o configura SDK Build Tools. |