Ottimizzazione del codice DEX

L'ottimizzazione del codice DEX è un risultato di Android vitals che ti aiuta a monitorare e migliorare la qualità, le dimensioni e il rendimento della compilazione della tua app. 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.

Android vitals genera report sulle metriche di ottimizzazione del codice DEX per tutte le app e i giochi, ma applica le soglie solo per le app e i giochi che soddisfano requisiti specifici di dimensioni.

Rilevare il problema

Android vitals può avvisarti quando i livelli di ottimizzazione del codice DEX della tua app sono bassi. Sono inclusi l'offuscamento, la riduzione e l'ottimizzazione per app e giochi che utilizzano R8. Per le app che non utilizzano R8, Android vitals tenta di controllare i tassi di ottimizzazione, riduzione e offuscamento, ma ricorre all'euristica di offuscamento come proxy, se necessario.

Monitorare lo stato dell'ottimizzazione

Android vitals può aiutarti a migliorare le prestazioni della tua app avvisandoti tramite Play Console quando la tua app non soddisfa le percentuali minime definite per l'ottimizzazione del codice. Per definizioni dettagliate di riduzione, ottimizzazione e offuscamento, vedi Utilizzare R8 Configuration Analyzer.

Per le app create con l'ultima patch di AGP versione 8.10 o successive, queste percentuali vengono estratte dal file r8.json incluso.

Per le versioni precedenti di AGP o quando il file r8.json non è incluso, le percentuali vengono calcolate dal file mapping.txt, se incluso, o utilizzando l'euristica DEX se il file di mapping non è disponibile.

Per le app ottimizzate con un ottimizzatore di codice alternativo, Android vitals esegue un'analisi per stimare la percentuale di classi, metodi e campi offuscati nell'app bundle.

Valori minimi per la dimensione DEX totale

Anche se Android vitals calcola le metriche di ottimizzazione del codice per tutte le app, riceverai avvisi solo se il tuo app bundle soddisfa i seguenti requisiti relativi alle dimensioni DEX totali:

  • App: il bundle contiene almeno 10 MB di codice DEX misurati come dimensioni non compresse
  • Giochi: il bundle contiene almeno 50 MB di codice DEX misurati come dimensione non compressa

Android vitals mostra le dimensioni DEX della tua app, ma puoi misurarle anche localmente utilizzando la riga di comando:

  unzip -l <yourapp>.aab | grep -E '\.dex$' | awk '{sum+=$1} END {print sum}'

Per esaminare i metadati esatti utilizzati da Android vitals per calcolare i punteggi, estrai il file r8.json dal tuo app bundle:

unzip -p <yourapp>.aab BUNDLE-METADATA/com.android.tools/r8.json