Puoi ottimizzare pacchetti specifici utilizzando R8 con packageScope. Questo passaggio è
concepito come primo passaggio facoltativo per le app che non utilizzano ancora R8 e non è
consigliato per le app che già utilizzano R8.
Valuta se utilizzare packageScope
Se la tua app utilizza già R8, non utilizzare packageScope, perché si tratta di una
configurazione non ottimale in termini di prestazioni e dimensioni dell'app. Migliora invece
la configurazione R8 della tua app con regole di conservazione migliorate o, se utilizzi
la modalità di compatibilità, esegui la migrazione alla modalità completa di R8.
Per le app che non utilizzano ancora R8, ma che lo stanno adottando, utilizza packageScope per
gestire la transizione in modo incrementale. Poiché R8 applica ottimizzazioni potenti
che possono alterare il comportamento dell'app, limitare queste ottimizzazioni a pacchetti specifici
che è sicuro ottimizzare, come AndroidX e Kotlin, ti consente di ottenere
miglioramenti delle prestazioni con un rischio minimo. Una volta stabilizzata l'app, puoi espandere gradualmente
queste ottimizzazioni al resto del codebase e delle dipendenze,
testando la stabilità in ogni fase.
Prerequisiti
L'utilizzo di R8 con packageScope richiede il plug-in Android per Gradle 9.0 o versioni successive.
Configurare l'ottimizzazione
Per attivare l'ottimizzazione con packageScope, completa i seguenti passaggi.
Scegliere le librerie da ottimizzare
Identifica le librerie da ottimizzare. Ti consigliamo di iniziare con le librerie AndroidX e
Kotlin androidx.**, kotlin.** e kotlinx.** perché si tratta di librerie
stabili configurate per la compatibilità con R8.
Attiva il supporto per l'utilizzo di R8 con packageScope
Aggiungi quanto segue al file gradle.properties del progetto:
android.r8.gradual.support=true
Configurare il blocco di ottimizzazione
Nel file build.gradle.kts (o build.gradle) a livello di modulo, aggiungi un blocco optimization alla configurazione della build di rilascio. All'interno di questo blocco, utilizza
packageScope per elencare i pacchetti specifici che vuoi ottimizzare. Nel file
build.gradle.kts, racchiudi l'elenco dei pacchetti in setOf().
Kotlin
android { buildTypes { release { proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"),"proguard-rules.pro") optimization { enable = true packageScope = setOf("androidx.**","kotlin.**", "kotlinx.**") } } } }
Groovy
android { buildTypes { release { proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' optimization { enable = true packageScope = ["androidx.**", "kotlin.**", "kotlinx.**"] } } } }
Testare l'ottimizzazione
Dopo aver applicato o aggiornato la dichiarazione packageScope, testa a fondo la tua
app per verificare che non si siano verificati arresti anomali o modifiche del comportamento imprevisti.
Transizione dall'ottimizzazione di pacchetti specifici all'ottimizzazione dell'intera app
Per massimizzare i vantaggi dell'ottimizzazione, devi passare gradualmente dall'utilizzo di
packageScope all'utilizzo di R8 in tutta l'app. Questo processo prevede
l'espansione incrementale della copertura dell'ottimizzazione:
- Inizia con librerie stabili. Inizia includendo solo librerie stabili e di uso comune
compatibili con le ottimizzazioni di R8 nell'elenco
packageScope. Inizia con le librerie AndroidX e Kotlinandroidx.**,kotlin.**ekotlinx.**. - Aggiungi pacchetti in modo incrementale. Aggiungi gradualmente nuovi prefissi pacchetto al
packageScope:- Valuta le dipendenze. Controlla le librerie della tua app. I candidati ideali da
aggiungere all'elenco
packageScopeincludono librerie Google ufficiali (ad esempio,com.google.**) e altre librerie robuste comeOkHttp(ad esempio,okhttp3.**eokio.**). Dai la priorità alle librerie che non comportano chiamate di reflection, serializzazione o codice nativo (JNI) pesanti. - Priorità in base alle dimensioni del pacchetto. Utilizza APK Analyzer di Android Studio per identificare i fattori che contribuiscono maggiormente alle dimensioni della tua app.
1. Crea un AAB o un APK di release con R8 disattivato.
1. Apri il file nell'analizzatore e controlla i file
dex. 1. Ordina i pacchetti per dimensioni. I pacchetti più grandi offrono il ritorno sull'investimento (ROI) più elevato per l'ottimizzazione. Il targeting di queste librerie ti offre la riduzione più significativa delle dimensioni all'inizio del processo, a condizione che queste librerie non abbiano regole di conservazione eccessivamente ampie. Per saperne di più, consulta la sezione Scegliere le librerie con attenzione.
- Valuta le dipendenze. Controlla le librerie della tua app. I candidati ideali da
aggiungere all'elenco
- Verifica le modifiche al comportamento. Dopo aver aggiunto ogni nuovo prefisso del pacchetto, esegui test completi per rilevare e risolvere eventuali regressioni o comportamenti imprevisti.
- Aggiungi i pacchetti dell'app per ultimi. Se i pacchetti dell'app non utilizzano molta
reflection, includili in
packageScopee aggiungi regole di conservazione in modo incrementale in base alle necessità. Se i pacchetti dell'app utilizzano molte reflection, includi i pacchetti inpackageScopee aggiungi regole di conservazione a livello di pacchetto per i pacchetti richiesti. Itera le regole di conservazione per perfezionarle. - Passa all'utilizzo di R8 nell'intera app. Dopo che la maggior parte delle dipendenze dell'app
sono incluse nella dichiarazione
packageScopee l'app è stabile, rimuovipackageScopeper ottimizzare l'intera app in modalità completa.