L'ottimizzazione e l'offuscamento del codice utilizzando R8 o strumenti alternativi (come ottimizzatori compatibili con ProGuard o post-processori DEX secondari) riducono le dimensioni del file DEX dell'app, migliorano le prestazioni di runtime e riducono al minimo l'utilizzo della memoria.
I file DEX, o Dalvik Executable, contengono il codice compilato utilizzato
per eseguire la tua app. In genere includono codice Java e Kotlin, a differenza del
codice C++ compilato o dei file .so.
Misurare l'ottimizzazione del codice R8 in locale
Per misurare localmente la dimensione DEX non compressa del tuo app bundle utilizzando la riga di comando, esegui:
unzip -l <yourapp>.aab | grep -E '\.dex$' | awk '{sum+=$1} END {print sum}'
Se la tua app viene ottimizzata con R8, puoi misurare l'ottimizzazione, l'offuscamento e la riduzione del bundle dell'app utilizzando R8 Configuration Analyzer. Per definizioni dettagliate di riduzione, ottimizzazione e offuscamento, consulta Utilizza R8 Configuration Analyzer. Il report R8 Configuration Analyzer è incluso anche nella skill di analisi R8.
Per esaminare i metadati post-ottimizzazione incorporati nell'app bundle (per AGP versione 8.10 o successive), estrai il file r8.json:
unzip -p <yourapp>.aab BUNDLE-METADATA/com.android.tools/r8.json
Risolvi il problema
Per risolvere i problemi relativi ai punteggi di ottimizzazione del codice DEX bassi, esamina i consigli in base al sistema di compilazione e all'ottimizzatore:
Plug-in Android per Gradle e R8
Per migliorare i punteggi di ottimizzazione del codice DEX R8, consulta le indicazioni riportate in Migliorare l'ottimizzazione R8. Puoi anche utilizzare la skill R8 Analyzer per ricevere indicazioni aggiuntive sull'ottimizzazione delle regole di conservazione dell'app.
Sistemi di compilazione non R8 e post-processori DEX
Se la pipeline di build utilizza strumenti di build personalizzati o post-processori DEX secondari, segui questi passaggi per migliorare l'ottimizzazione dell'app:
- Apri il tuo app bundle in Android Studio e visualizzalo in Strumento di analisi APK.
- Seleziona tutti i file
.dex. - Presta particolare attenzione ai file di dimensioni maggiori quando attivi/disattivi il pulsante
"Deoffusca nomi" (nota: per questa operazione devi
caricare un
mapping.txtfile). Se alcuni di questi file rimangono di grandi dimensioni dopo l'offuscamento, è probabile che siano interessati da regole di conservazione a livello di pacchetto. - Cerca nel file
proguard-rules.pro,configuration.txto nell'equivalente per l'ottimizzatore se non utilizzi R8 e cerca le regole keep che corrispondono ai pacchetti che non vengono offuscati. Ad esempio, secom.foo.è un pacchetto di grandi dimensioni nel tuo dex, cerca regole di conservazione nel formato-keep com.foo.**o-keep com.foo.bar.**. - Tieni presente che le regole di conservazione dei consumatori della libreria potrebbero non essere così semplici da identificare. Se sospetti che una regola di consumo della libreria influisca sull'ottimizzazione, puoi eseguire la convalida localmente aggiungendola a un'app di esempio autonoma utilizzando una versione recente di AGP e ispezionandola con R8 Configuration Analyzer.