Tworzenie profili uruchamiania

Profile uruchamiania są podzbiorem profili podstawowych. Profile uruchamiania są używane przez system kompilacji do dalszej optymalizacji klas i metod, które zawierają, poprzez poprawę układu kodu w plikach DEX pakietu APK. Dzięki profilom uruchamiania uruchamianie aplikacji jest zwykle o 15–30% szybsze niż w przypadku samych profili podstawowych.

Więcej informacji znajdziesz w artykule Omówienie profili uruchamiania.

Wymagania

Zalecamy używanie profili uruchamiania z tymi narzędziami:

  • Jetpack Macrobenchmark w wersji 1.2.0 lub nowszej
  • Wtyczka Androida do obsługi Gradle (AGP) w wersji 8.2 lub nowszej
  • Android Studio Iguana lub nowsze

Oprócz tego w aplikacji musisz mieć te ustawienia:

  • Włączona usługa R8. W przypadku kompilacji do publikacji ustaw isMinifyEnabled = true.
  • Włączona optymalizacja układu DEX. Jest ona dostępna tylko od wersji AGP 8.1 i jest domyślnie włączona od wersji AGP 8.3. W przypadku wersji AGP od 8.1 do 8.2 w bloku baselineProfile {} pliku kompilacji modułu aplikacji ustaw dexLayoutOptimization = true.

Tworzenie profilu uruchamiania

Android Studio tworzy profil uruchamiania wraz z profilem podstawowym, gdy używasz domyślnego szablonu generatora profili podstawowych.

Ogólne kroki tworzenia i generowania profilu uruchamiania są takie same jak w przypadku tworzenia profilu podstawowego.

Domyślny sposób tworzenia profilu uruchamiania polega na użyciu szablonu modułu generatora profili podstawowych w Android Studio. Obejmuje to interakcje uruchamiania, które tworzą podstawowy profil uruchamiania. Aby rozszerzyć ten profil uruchamiania o więcej najważniejszych ścieżek użytkownika, dodaj ścieżki uruchamiania aplikacji do bloku rule z ustawieniem includeInStartupProfile na true. W przypadku prostych aplikacji może wystarczyć uruchomienie MainActivity aplikacji. W przypadku bardziej złożonych aplikacji rozważ dodanie najczęstszych punktów wejścia do aplikacji, takich jak uruchamianie aplikacji z ekranu głównego lub uruchamianie za pomocą precyzyjnego linku.

Ten fragment kodu pokazuje generator profili podstawowych (domyślnie plik BaselineProfileGenerator.kt), który obejmuje uruchamianie aplikacji z ekranu głównego i uruchamianie za pomocą precyzyjnego linku. Precyzyjny link prowadzi bezpośrednio do kanału wiadomości aplikacji, a nie do jej ekranu głównego.

@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")
                })
        }
    }
}

Uruchom konfigurację Generate Baseline Profile for app i znajdź reguły profilu uruchamiania w pliku Startup Profile rules at src/<variant>/generated/baselineProfiles/startup-prof.txt, gdzie są one automatycznie wykorzystywane przez AGP.

Wskazówki dotyczące tworzenia profili uruchamiania

Aby zdecydować, które ścieżki użytkownika uwzględnić podczas tworzenia profilu uruchamiania, zastanów się, gdzie większość użytkowników rozpoczyna korzystanie z aplikacji. Zwykle jest to launcher i po zalogowaniu. Jest to też najbardziej podstawowa ścieżka profilu podstawowego.

Po uwzględnieniu pierwszego przypadku użycia postępuj zgodnie z lejkiem użytkownika podczas uruchamiania aplikacji. W wielu przypadkach lejki uruchamiania aplikacji są zgodne z tą listą:

  1. Główna aktywność launchera
  2. Powiadomienia, które uruchamiają aplikację
  3. Opcjonalne aktywności launchera

Przejdź przez tę listę od góry i zatrzymaj się, zanim plik classes.dex zostanie zapełniony. Aby później uwzględnić więcej ścieżek, przenieś kod ze ścieżki uruchamiania i dodaj więcej ścieżek. Aby przenieść kod ze ścieżki uruchamiania, sprawdź ślady Perfetto podczas uruchamiania aplikacji i poszukaj długotrwałych operacji. Możesz też użyć makrobenchmarku z włączonym śledzeniem metod, aby uzyskać automatyczny i pełny widok wywołań metod podczas uruchamiania aplikacji.