Crea profili di avvio

Scopri requisiti, passaggi di creazione e best practice. keywords_public: Startup Profiles, Baseline Profiles, prestazioni dell'app, ottimizzazione APK, layout DEX, Android Studio, Jetpack Macrobenchmark

I profili di avvio sono un sottoinsieme dei profili di base. I profili di avvio vengono utilizzati dal sistema di build 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 base.

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 8.2 o versioni successive
  • Android Studio Iguana o versioni successive

Inoltre, devi disporre delle seguenti impostazioni nella tua app:

  • R8 attivato. Per la build della release, imposta isMinifyEnabled = true.
  • Ottimizzazioni del layout DEX attivate. Nel blocco baselineProfile {} del file di build del modulo dell'app, imposta dexLayoutOptimization = true.

Crea un profilo startup

Android Studio crea un profilo di avvio insieme a un profilo di base quando utilizzi il modello predefinito del generatore di profili di base.

I passaggi generali per creare e generare un profilo di avvio sono gli stessi di quelli per creare un profilo di base.

Il modo predefinito per creare un profilo di avvio è utilizzare il modello di modulo del generatore di profili di base in Android Studio. Ciò include le interazioni delle startup che formano un profilo di base. Per ampliare questo profilo di avvio con altri percorsi utente critici (CUP), aggiungi i CUP di avvio dell'app a un blocco rule con includeInStartupProfile impostato su true. Per le app semplici, l'avvio dell'MainActivity dell'app potrebbe essere sufficiente. Per le app più complesse, valuta la possibilità di aggiungere i punti di accesso più comuni alla tua app, ad esempio l'avvio dell'app dalla schermata Home o l'apertura di un link diretto.

Lo snippet di codice seguente mostra un generatore di profili di base (per impostazione predefinita il file BaselineProfileGenerator.kt) che include l'avvio dell'app dalla schermata Home e l'apertura di un deep link. 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 base 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 startup

Per decidere quali percorsi utente coprire quando crei un profilo di avvio, considera dove la maggior parte degli utenti inizia l'applicazione. Di solito, dal launcher e dopo l'accesso. Questo è anche il percorso del profilo di base più semplice.

Dopo aver trattato il primo caso d'uso, segui il funnel dell'utente per l'avvio dell'app. In molti casi, i funnel di avvio delle app seguono questo elenco:

  1. Attività principale dell'avvio app
  2. Notifiche che attivano l'avvio dell'app
  3. Attività facoltative del launcher

Lavora su questo elenco dall'alto e fermati prima che classes.dex sia pieno. Per coprire più viaggi in seguito, sposta il codice dal percorso di avvio e aggiungi altri viaggi. Per spostare il codice dal percorso di avvio, esamina le tracce Perfetto durante l'avvio dell'app e cerca le operazioni di lunga durata. Puoi anche utilizzare un macrobenchmark con la traccia dei metodi abilitata per una visualizzazione automatizzabile e completa delle chiamate ai metodi durante l'avvio dell'app.