Usa R8 per ridurre, ottimizzare e velocizzare la tua app
Ti diamo il benvenuto al primo giorno della settimana di approfondimento sulle prestazioni di Android.
Iniziamo con la modifica più efficace e che richiede meno impegno per migliorare le prestazioni della tua app: l'attivazione dell'ottimizzatore R8 in modalità completa.
Probabilmente conosci già R8 come strumento per ridurre le dimensioni della tua app. Rimuove in modo efficace codice e risorse inutilizzati, riducendo le dimensioni dell'app. Tuttavia, la sua vera potenza, quella in cui è davvero g-R8 , è quella di ottimizzatore.
Quando attivi la modalità completa e consenti le ottimizzazioni, R8 esegue ottimizzazioni approfondite dell'intero programma, riscrivendo il codice per renderlo fondamentalmente più efficiente. Non si tratta solo di una piccola modifica.
Dopo aver letto questo articolo, guarda l'introduzione alla settimana di approfondimento sulle prestazioni di Android e all'ottimizzatore R8 su YouTube.
In che modo R8 migliora le prestazioni della tua app
Diamo un'occhiata ai passaggi più importanti che l'ottimizzatore R8 esegue per migliorare le prestazioni dell'app.
Il tree shaking è il passaggio più importante per ridurre le dimensioni dell'app. Durante questa fase, l'ottimizzatore R8 rimuove il codice inutilizzato dalle librerie da cui dipende la tua app, nonché il codice non utilizzato dalla tua codebase.
L'inlining dei metodi sostituisce una chiamata al metodo con il codice effettivo, migliorando le prestazioni del tempo di esecuzione.
Il merge delle classi e altre strategie vengono applicate per rendere il codice più compatto. A questo punto, tutte le tue astrazioni, come interfacce e gerarchie di classi, non contano e probabilmente verranno rimosse.
La minimizzazione del codice viene utilizzata per modificare i nomi di classi, campi e metodi in nomi più brevi e senza significato. Ad esempio, invece di MyDataModel potresti avere una classe chiamata a. Questo è ciò che causa la maggior parte della confusione quando si leggono le tracce dello stack di un'app ottimizzata con R8. (Tieni presente che abbiamo migliorato questo aspetto in AGP 9.0!)
La riduzione delle risorse riduce ulteriormente le dimensioni di un'app rimuovendo le risorse inutilizzate, come file XML e drawables.
Applicando questi passaggi, l'ottimizzatore R8 migliora i tempi di avvio dell'app, consente un rendering dell'interfaccia utente più fluido, con meno frame lenti e bloccati, e migliora l'utilizzo complessivo delle risorse sul dispositivo.
Case study: miglioramenti delle prestazioni di Reddit con R8
Per fare un esempio dei miglioramenti delle prestazioni che R8 può apportare, diamo un'occhiata a un esempio di Reddit. Dopo aver attivato R8 in modalità completa, l'app Reddit per Android ha registrato miglioramenti significativi delle prestazioni in varie aree.
Didascalia: in che modo R8 ha migliorato le prestazioni dell'app Reddit
Il team ha osservato un avvio a freddo più veloce del 40% , una riduzione del 30% degli errori "L'applicazione non risponde" (ANR), un miglioramento del 25% del rendering dei frame e una riduzione del 14% delle dimensioni dell'app.
Questi miglioramenti sono fondamentali per la soddisfazione degli utenti. Un avvio più rapido significa meno attesa e un accesso più veloce ai contenuti. Un minor numero di errori ANR porta a un'app più stabile e affidabile, riducendo la frustrazione degli utenti. Un rendering dei frame più fluido elimina i problemi dell'interfaccia utente, rendendo lo scorrimento e le animazioni fluidi e reattivi. Questo impatto tecnico positivo è stato chiaramente visibile anche nel sentiment degli utenti.
Puoi leggere ulteriori informazioni sui miglioramenti sul nostro blog.
Effetti collaterali non tecnici dell'utilizzo di R8
Durante il nostro lavoro con i partner, abbiamo notato che questi miglioramenti tecnici hanno un impatto diretto sulla soddisfazione degli utenti e possono riflettersi sulla fidelizzazione degli utenti, sul coinvolgimento e sulla durata della sessione. Anche la user stickiness, che può essere misurata con gli utenti attivi giornalieri, settimanali o mensili, è stata influenzata positivamente dai miglioramenti delle prestazioni tecniche. Inoltre, abbiamo notato che le valutazioni delle app sul Play Store sono aumentate in correlazione con l'adozione di R8. Condividere queste informazioni con i proprietari dei prodotti, i CTO e i responsabili delle decisioni può contribuire ad accelerare le prestazioni della tua app.
Quindi, chiamiamola con il suo nome: l'ottimizzazione deliberata delle prestazioni è una virtù.
Ti aiutiamo a creare un'app con prestazioni migliori
Abbiamo ricevuto feedback che le nostre indicazioni per gli sviluppatori per R8 dovevano essere migliorate. Quindi ci siamo messi al lavoro. Le indicazioni per gli sviluppatori per l'ottimizzatore R8 sono ora molto più pratiche e forniscono indicazioni complete per attivare ed eseguire il debug di R8.
La documentazione ti guida nella strategia di adozione di alto livello, sottolineando l'importanza di scegliere librerie ottimizzate per l'ottimizzazione e, soprattutto, di adottare le funzionalità di R8 in modo incrementale per garantire la stabilità. Questo approccio graduale ti consente di sbloccare in sicurezza i vantaggi di R8, fornendoti al contempo indicazioni sui problemi di cui è difficile eseguire il debug.
Abbiamo ampliato in modo significativo le nostre indicazioni sulle regole Keep, che sono il meccanismo principale per controllare l'ottimizzatore R8. Ora forniamo una sezione su cosa sono le regole Keep, su come applicarle e ti guidiamo con le best practice per scriverle e mantenerle. Forniamo anche casi d'uso ed esempi pratici e utili, che ti aiutano a capire come impedire correttamente a R8 di rimuovere il codice necessario in fase di runtime, ad esempio il codice a cui si accede tramite reflection o l'utilizzo dell'interfaccia nativa JNI.
La documentazione ora include anche i passaggi di follow-up essenziali e gli scenari avanzati. Abbiamo aggiunto una sezione su test e risoluzione dei problemi, in modo che tu possa verificare i miglioramenti delle prestazioni ed eseguire il debug di eventuali problemi che si presentano. La sezione sulle configurazioni avanzate spiega come scegliere come target varianti di build specifiche, personalizzare le risorse mantenute o rimosse e offre istruzioni di ottimizzazione speciali per gli autori di librerie, assicurandoti di poter fornire un pacchetto ottimizzato e compatibile con R8 per altri sviluppatori.
Sfrutta appieno il potenziale dell'ottimizzatore R8
L'ottimizzatore R8 utilizza per impostazione predefinita la "modalità completa" dalla versione 8.0 del plug-in Android per Gradle. Se il tuo progetto è stato sviluppato nel corso di molti anni, potrebbe ancora includere un flag legacy per disattivarlo. Controlla se nel file gradle.properties è presente questa riga e rimuovila.
android.enableR8.fullMode=false // delete this line to enable R8's full potential
Ora controlla se hai attivato R8 nel file build.gradle.kts della tua app per la variante di release. Per attivarlo, imposta isMinifyEnabled e isShrinkResources su true. In questo passaggio puoi anche passare file di configurazione predefiniti e personalizzati.
release {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"keep-rules.pro"
)
}Case study: miglioramenti delle prestazioni di Disney+
Gli ingegneri di Disney+ investono nelle prestazioni delle app e stanno ottimizzando l'esperienza utente dell'app. A volte anche modifiche apparentemente piccole possono avere un impatto enorme. Durante l'ispezione della configurazione di R8, il team ha scoperto che veniva utilizzato il flag -dontoptimize. È stato introdotto da un file di configurazione predefinito, ancora utilizzato in molte app.
Dopo aver sostituito proguard-android.txt con proguard-android-optimize.txt, il team di Disney+ ha riscontrato miglioramenti significativi nelle prestazioni dell'app.
Dopo il lancio di una nuova versione dell'app contenente questa modifica, Disney+ ha registrato un avvio dell'app più veloce del 30% e il 25% in meno di errori ANR percepiti dagli utenti.
Oggi molte app utilizzano ancora il file proguard-android.txt che contiene il flag -dontoptimize. Ed è qui che entrano in gioco i nostri miglioramenti degli strumenti.
Supporto degli strumenti
A partire da Android Studio Narwhal 3 Feature Drop, vedrai un avviso di lint quando utilizzi proguard-android.txt
A partire da AGP 9.0, non supporteremo più il file. Ciò significa che dovrai eseguire la migrazione a proguard-android-optimize.txt.
Abbiamo anche investito in nuove funzionalità di Android Studio per semplificare più che mai il debug del codice ottimizzato con R8. A partire da AGP 9.0, puoi ora deoffuscare automaticamente le tracce dello stack all'interno di Logcat di Android Studio per le build elaborate con R8, il che ti aiuta a individuare la riga di codice esatta che causa un problema, anche in un'app completamente ottimizzata. Questo argomento verrà trattato in modo più approfondito nel post del blog di domani su questa settimana di approfondimento sulle prestazioni di Android.
Passaggi successivi
Guarda l'introduzione alla settimana di approfondimento sulle prestazioni di Android e all'ottimizzatore R8 su YouTube.
📣 Partecipa alla sfida sulle prestazioni
È il momento di scoprire i vantaggi.
Ti invitiamo ad attivare la modalità completa di R8 per la tua app oggi.
- Per iniziare, segui le nostre guide per gli sviluppatori: Attiva l'ottimizzazione dell'app.
- Controlla se utilizzi ancora
proguard-android.txte sostituiscilo conproguard-android-optimize.txt. - Poi, misura l'impatto. Non sentire solo la differenza, verificala. Misura i miglioramenti delle prestazioni adattando il codice della nostra app di esempio Macrobenchmark su GitHub per misurare i tempi di avvio prima e dopo.
Siamo certi che noterai un miglioramento significativo delle prestazioni della tua app. Utilizza #optimizationEnabled per eventuali domande sull'attivazione o sulla risoluzione dei problemi di R8. Siamo a tua disposizione.
Invia le tue domande per la sessione Ask Android di venerdì
Utilizza il tag social #AskAndroid per inviare eventuali domande sulle prestazioni. Durante la settimana monitoreremo le tue domande e risponderemo a diverse nella sessione Ask Android sulle prestazioni di venerdì 21 novembre.Non perderti il post di domani, in cui approfondiremo il debug e la risoluzione dei problemi. Per ora, inizia a utilizzare R8 e velocizza la tua app.
Continua a leggere
-
Eventi e programmi
Dalle funzionalità di base dell'ottimizzatore R8 e delle ottimizzazioni guidate dal profilo ai miglioramenti delle prestazioni con Jetpack Compose, fino a una nuova guida per migliorare le prestazioni della tua app, abbiamo trattato gli strumenti che richiedono poco impegno e hanno un impatto elevato di cui hai bisogno per creare un'app con prestazioni elevate.
Ben Weiss, Sara Hamilton • Lettura di 3 minuti
-
Eventi e programmi
Lo scorso settembre abbiamo condiviso la nostra visione per il futuro di Google Play Games basata su una convinzione fondamentale: il modo migliore per garantire il successo del tuo gioco è offrire un'esperienza giocatore di livello mondiale.
Maru Ahues Bouza • Lettura di 3 minuti
-
Eventi e programmi
Google I/O è tornato. Unisciti a noi online per scoprire le ultime innovazioni e gli aggiornamenti dell'AI nei prodotti dell'azienda, da Gemini ad Android, Chrome, Cloud e altro ancora.
Lettura di 1 minuto
Segui gli aggiornamenti
Ricevi ogni settimana nella tua casella di posta le ultime informazioni sullo sviluppo di Android.