Usa R8 per ridurre, ottimizzare e velocizzare la tua app
Ti diamo il benvenuto al primo giorno della settimana dedicata al rendimento di Android.
Iniziamo con la modifica più efficace e che richiede meno impegno per migliorare il rendimento 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 il codice e le 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 dedicata al rendimento su YouTube.
In che modo R8 migliora il rendimento 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 il rendimento di runtime.
L'unione delle classi e altre strategie vengono applicate per rendere il codice più compatto. Tutte le tue astrazioni, come interfacce e gerarchie di classi, non contano in questo momento 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 ritrovarti con una classe chiamata a. Questo è ciò che causa la maggior parte della confusione durante la lettura delle 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 disegni.
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.
Caso di studio: miglioramenti del rendimento di Reddit con R8
Per fare un esempio dei miglioramenti del rendimento 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 del rendimento 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 accesso più rapido 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 del rendimento tecnico. 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 responsabili di prodotto, i CTO e i responsabili delle decisioni può contribuire ad accelerare il rendimento della tua app.
Quindi, chiamiamola per nome: l'ottimizzazione deliberata del rendimento è una virtù.
Ti aiutiamo a creare un'app con un rendimento migliore
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, come applicarle e ti guidiamo con le best practice per scriverle e mantenerle. Forniamo anche casi d'uso ed esempi pratici e utili, per aiutarti 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 del rendimento ed eseguire il debug di eventuali problemi che potrebbero verificarsi. La sezione sulle configurazioni avanzate spiega come scegliere come target varianti di build specifiche, personalizzare le risorse da conservare o rimuovere 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 il file gradle.properties per 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. È attivato impostando 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"
)
}Caso di studio: miglioramenti del rendimento di Disney+
Gli ingegneri di Disney+ investono nelle prestazioni dell'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 oggi utilizzato in molte app.
Dopo aver sostituito proguard-android.txt con proguard-android-optimize.txt, il team di Disney+ ha riscontrato miglioramenti significativi nel rendimento 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 rendere il debug del codice ottimizzato con R8 più semplice che mai. A partire da AGP 9.0, ora puoi deoffuscare automaticamente le tracce dello stack all'interno di Logcat di Android Studio per le build elaborate con R8, aiutandoti 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 dedicata al rendimento di Android.
Passaggi successivi
Guarda l'introduzione alla settimana dedicata al rendimento su YouTube.
📣 Partecipa alla sfida sul rendimento!
È il momento di scoprire i vantaggi in prima persona.
Ti invitiamo ad attivare la modalità completa di R8 per la tua app oggi.
- Segui le nostre guide per gli sviluppatori per iniziare: 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 del rendimento 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 del rendimento 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 sul rendimento. Durante la settimana monitoreremo le tue domande e risponderemo a diverse nella sessione Ask Android sul rendimento 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 del rendimento con Jetpack Compose, fino a una nuova guida per migliorare il rendimento 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 un buon rendimento.
Ben Weiss, Sara Hamilton • Lettura di 3 minuti
-
Eventi e programmi
Stiamo aprendo le candidature per il programma Android XR Developer Catalyst, un'iniziativa dedicata ad accelerare lo sviluppo di app Android XR pronte per il lancio entro il prossimo anno.
Lettura di 1 minuto
-
Eventi e programmi
Il programma di Google I/O è arrivato.
Lettura di 1 minuto
Resta al passo con le novità
Ricevi ogni settimana nella tua casella di posta gli ultimi approfondimenti sullo sviluppo di Android.