I profili di avvio sono un sottoinsieme dei profili di baseline. I profili di avvio vengono utilizzati dal sistema di compilazione per ottimizzare ulteriormente le classi e i metodi che contengono migliorando il layout del codice nei file DEX dell'APK. Con i profili di avvio, l'avvio dell'app è in genere più veloce del 15-30% rispetto ai soli profili di baseline.
Per saperne di più, consulta la panoramica dei profili di avvio.
Requisiti
Ti consigliamo di utilizzare i profili di avvio con i seguenti strumenti:
- Jetpack Macrobenchmark 1.2.0 o versioni successive
- Plug-in Android per Gradle (AGP) 8.2 o versioni successive
- Android Studio Iguana o versioni successive
Inoltre, devi avere le seguenti impostazioni nella tua app:
- R8 attivato. Per la build di release, imposta
isMinifyEnabled = true. - Ottimizzazioni del layout DEX attivate. Questa opzione è disponibile solo a partire da AGP 8.1 ed è attivata per impostazione predefinita a partire da AGP 8.3. Per le versioni di AGP da 8.1 a 8.2, nel blocco
baselineProfile {}del file della build del modulo dell'app, impostadexLayoutOptimization = true.
Creare un profilo di avvio
Android Studio crea un profilo di avvio insieme a un profilo di baseline quando utilizzi il modello predefinito del generatore di profili di baseline.
I passaggi generali per creare e generare un profilo di avvio sono gli stessi di quelli per creare un profilo di baseline.
Il modo predefinito per creare un profilo di avvio è utilizzare il modello del modulo del generatore di profili di baseline da Android Studio. Sono incluse le interazioni di avvio che formano un profilo di avvio di base. Per aumentare questo profilo di avvio con altri percorsi utente critici (CUJ), aggiungi i CUJ di avvio dell'app a un blocco rule con includeInStartupProfile impostato su true. Per le app semplici, potrebbe essere sufficiente avviare MainActivity dell'app. Per le app più complesse, valuta la possibilità di aggiungere i punti di accesso più comuni all'app, ad esempio l'avvio dell'app dalla schermata Home o l'avvio in un link diretto.
Il seguente snippet di codice mostra un generatore di profili di baseline (per impostazione predefinita il file BaselineProfileGenerator.kt) che include l'avvio dell'app dalla schermata Home e l'avvio in un link diretto. Il link diretto rimanda direttamente al feed di notizie dell'app, non alla schermata Home dell'app.
@RunWith(AndroidJUnit4::class)
@LargeTest
class BaselineProfileGenerator {
@get:Rule
val rule = BaselineProfileRule()
@Test
fun generate() {
rule.collect(
packageName = "com.example.app",
includeInStartupProfile = true
) {
uiAutomator {
// Launch directly into the NEWS_FEED using startActivityIntent
startIntent(Intent().apply {
setPackage(packageName)
setAction("com.example.app.NEWS_FEED")
})
}
}
}
Esegui la configurazione Genera profilo di baseline per l'app e trova le regole del profilo di avvio in
src/<variant>/generated/baselineProfiles/startup-prof.txt, dove vengono
utilizzate automaticamente da AGP.
Considerazioni per la creazione di profili di avvio
Per decidere quali percorsi utente coprire durante la creazione di un profilo di avvio, considera da dove la maggior parte degli utenti avvia l'applicazione. Di solito è dal launcher e dopo aver eseguito l'accesso. Questo è anche il percorso del profilo di baseline più semplice.
Dopo aver trattato il primo caso d'uso, segui il funnel utente per l'avvio dell'app. In molti casi, i funnel di avvio dell'app seguono questo elenco:
- Attività del launcher principale
- Notifiche che attivano l'avvio dell'app
- Attività del launcher facoltative
Lavora su questo elenco dall'alto e fermati prima che classes.dex sia pieno. Per coprire più percorsi in un secondo momento, sposta il codice dal percorso di avvio e aggiungi altri percorsi. Per spostare il codice dal percorso di avvio, esamina le tracce di Perfetto durante l'avvio dell'app e cerca le operazioni a lunga esecuzione. Puoi anche utilizzare un macrobenchmark
con la traccia dei metodi abilitata per una visualizzazione automatica e completa delle chiamate di metodi
durante l'avvio dell'app.
Consigliati per te
- Nota: il testo del link viene visualizzato quando JavaScript è disattivato
- Creare profili di baseline {:#creating-profile-rules}
- Profili di baseline {:#baseline-profiles}
- Scrivere un microbenchmark