Dopo aver attivato l'ottimizzazione dell'app, controlla che l'app funzioni come previsto e che la configurazione R8 funzioni come previsto. I passaggi generali sono i seguenti:
- Testa i percorsi utente critici (CUJ) della tua app: ad esempio, assicurati che gli utenti possano accedere ed eseguire altre attività importanti.
- Misura i miglioramenti del rendimento utilizzando i benchmark: esegui un benchmark della tua app prima e dopo aver attivato l'ottimizzazione dell'app.
Se riscontri problemi, R8 fornisce strumenti per aiutarti a risolverli. Se non riesci a risolvere un problema con R8, segnala un bug.
Suggerimenti generali
I problemi relativi a R8 sono spesso specifici della tua app, ma di seguito sono riportati alcuni suggerimenti generali per semplificare il debug:
- Disattiva temporaneamente l'offuscamento:R8 offusca il codice nell'ambito del processo di ottimizzazione. L'oscuramento in genere non è la causa degli errori, ma lo rende più difficile da eseguire il debug. Aggiungi i flag
‑dontobfuscate
e‑dontoptimize
al file delle regole keep per individuare il codice problematico. Controlla la riflessione: se riscontri un'eccezione no such element (Nessun elemento di questo tipo) come
Caused by: java.util.NoSuchElementException: Collection contains no element matching the predicate in the stack trace
,in genere, l'eccezione indica che il campo in questione viene utilizzato tramite la riflessione e devi aggiungere una regola di mantenimento.
Esamina il bytecode:la maggior parte dei problemi di R8 richiede l'ispezione del bytecode, che puoi eseguire con strumenti come APK Analyzer.
Controllare quali regole vengono applicate
Per generare un report completo di tutte le regole applicate da R8 durante la compilazione del progetto, includi quanto segue nel file proguard‑rules.pro
del modulo dell'app:
-printconfiguration <output-dir>/<report-name>.txt
Puoi specificare qualsiasi percorso e nome file. Se non specifichi un percorso o un nome file, R8 genera il report sulle regole in <module-name>/build/outputs/mapping/<build-type>/configuration.txt
.
Capire perché il codice è stato mantenuto
Se vedi codice mantenuto che pensavi fosse stato rimosso, utilizza l'opzione di configurazione ‑whyareyoukeeping
per capire perché è stato mantenuto. R8 genera un percorso dal codice mantenuto a uno dei punti di accesso della tua app. Per ulteriori informazioni, consulta la documentazione di ‑whyareyoukeeping
nel manuale di Proguard.
Recuperare l'analisi dello stack originale
Il codice elaborato da R8 viene modificato in vari modi in modo che la traccia dello stack non si riferisca più al codice originale. Ad esempio, i numeri di riga e i nomi di classi e metodi possono cambiare. Per recuperare la traccia dello stack originale, R8 fornisce lo strumento a riga di comando retrace, incluso nel pacchetto degli strumenti a riga di comando.
Per utilizzare ReTrace, fornisci un file di mapping e un file di analisi dello stack. Il file di mappatura, denominato mapping.txt
, viene incluso automaticamente nel tuo Android App
Bundle (AAB). Per maggiori dettagli, consulta la documentazione relativa al ricostruttore e l'articolo del Centro assistenza Play Console su come deobfuscare le tracce dello stack degli arresti anomali.