Case study
Monzo migliora le metriche di rendimento fino al 35% con un semplice aggiornamento R8
Lettura di 2 minuti
Monzo è una banca digitale del Regno Unito con 15 milioni di clienti e in continua crescita. Con l'aumento delle dimensioni dell'app, il team di ingegneria ha identificato il tempo di avvio dell'app come un'area critica da migliorare, ma temeva che ciò avrebbe richiesto modifiche significative al codebase.
Attivando completamente le ottimizzazioni R8, Monzo ha ottenuto una riduzione del 35% del tasso di errori ANR (L'applicazione non risponde). Questa semplice modifica ha dimostrato che le ottimizzazioni efficaci non richiedono sempre interventi tecnici complessi.
Ottenere risultati migliori con la modalità completa R8
Monzo ha identificato la modalità completa R8 come una soluzione semplice da provare e ha funzionato, migliorando le prestazioni in generale:
- Affidabilità dell'avvio:gli avvii a freddo sono migliorati del 30%, gli avvii tiepidi del 24% e gli avvii rapidi del 14%.
- Velocità di lancio:i tempi di lancio P50 sono migliorati dell'11% e i tempi di lancio P90 del 12%.
- Efficienza:le dimensioni complessive dell'app sono state ridotte del 9%.
- Stabilità:riduzione degli errori ANR del 35%.
Abilitare le ottimizzazioni con una sola modifica
Molte app per Android utilizzano un file di configurazione predefinito obsoleto che disattiva la maggior parte delle funzionalità dell'ottimizzatore R8. La principale modifica apportata da Monzo per sbloccare questi miglioramenti delle prestazioni è stata la sostituzione del file predefinito proguard-android.txt con proguard-android-optimize.txt. Questa modifica rimuove l'istruzione -dontoptimize e consente a R8 di svolgere correttamente il proprio lavoro.
buildTypes {
release {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
)
}
}
Dopo aver apportato questa modifica, ti consigliamo di esaminare i file di configurazione di Keep. Questi file indicano a R8 quali parti del codice lasciare invariate (di solito perché vengono chiamate dinamicamente o da librerie esterne). Se elimini le regole di Keep non necessarie, R8 può fare di più.
Miglioramento delle prestazioni di scorrimento con i profili di base
Per migliorare ulteriormente l'esperienza utente, Monzo ha implementato i profili di base, prendendo di mira in modo specifico le prestazioni di scorrimento e rendering nel feed principale. Questa strategia ha garantito che i percorsi utente più comuni, ovvero l'apertura dell'app e lo scorrimento del feed, fossero completamente ottimizzati. L'impatto sul rendering è stato notevole: le prestazioni di scorrimento P90 sono diventate il 71% più veloci e le prestazioni di scorrimento P95 sono migliorate dell'87%. Ora lo scorrimento dell'app è più fluido rispetto a prima.
Monzo ha integrato questa funzionalità nel processo di rilascio per mantenere questi miglioramenti nel tempo. "Attiviamo la generazione del profilo di base ogni giorno della settimana (prima di eseguire le build notturne) e applichiamo le ultime modifiche al termine dell'operazione", spiega Neumayer.
Tenersi al passo con lo sviluppo Android moderno
L'esperienza di Monzo mostra cosa è possibile fare quando si seguono i consigli sugli strumenti di compilazione di Android. Mentre le app legacy spesso hanno difficoltà con l'utilizzo complesso della riflessione, Monzo ha trovato la transizione semplice documentando correttamente le regole di conservazione. "Aggiungiamo sempre un commento che spiega perché sono in vigore le regole di conservazione, così sappiamo quando è sicuro rimuoverle", osserva Neumayer.
Il consiglio di Neumayer per gli altri team? Controlla regolarmente le tue pratiche rispetto agli standard attuali: "Dai un'occhiata ai consigli più recenti di Google sulle prestazioni delle app e verifica se stai seguendo tutti i suggerimenti più recenti".
Per iniziare e scoprire di più su R8, visita la pagina https://d.android.com/r8
Continua a leggere
-
Case study
Durante la collaborazione con il team di Android Developer Relations, il team di ingegneria di Reddit ha utilizzato il punteggio di rendimento dell'app per valutare la propria app.
Ben Weiss • Lettura: 4 minuti
-
Case study
Karrot è un'app marketplace peer-to-peer iperlocale e basata sulla community che consente agli utenti di acquistare, vendere e scambiare articoli con altri utenti verificati. Dal lancio in Corea del Sud nel 2015, la piattaforma si è espansa nei mercati globali, accumulando oltre 43 milioni di utenti registrati.
Thomas Ezan, Tracy Agyemang • Lettura di 2 minuti
-
Case study
TikTok è una piattaforma globale di video brevi nota per la sua vasta base utenti e le sue funzionalità innovative.
Ben Trengrove, Ajesh Pai • Lettura di 2 minuti
Resta al passo con le novità
Ricevi ogni settimana gli ultimi approfondimenti sullo sviluppo per Android direttamente nella tua casella di posta.