Tworzenie profili uruchamiania

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

Ilustracja 1. Poprawa lokalności kodu dzięki optymalizacji układu DEX.

Wymagania

Zalecamy używanie profili startowych w przypadku tych narzędzi:

  • Jetpack Macrobenchmark w wersji 1.2.0 lub nowszej
  • Wtyczka Androida do obsługi Gradle w wersji 8.2 lub nowszej
  • Android Studio Iguana lub nowszy

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

  • Włączono R8. W przypadku wersji do wdrożenia ustaw isMinifyEnabled = true.
  • Włączono optymalizacje układu DEX. W bloku baselineProfile {} pliku kompilacji modułu aplikacji ustaw dexLayoutOptimization = true.

Tworzenie profilu startupu

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

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

Domyślny sposób tworzenia profilu startowego polega na użyciu szablonu modułu Baseline Profile Generator w Android Studio. Obejmuje to interakcje ze startupem, które tworzą podstawowy profil startupu. Aby rozszerzyć ten profil startupu o więcej kluczowych ścieżek użytkownika (CUJ), dodaj CUJ startupu aplikacji do bloku rule z ustawioną wartością includeInStartupProfile na true. W przypadku prostych aplikacji wystarczy uruchomić MainActivity. 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 za pomocą precyzyjnego linku.

Poniższy fragment kodu pokazuje generator profilu podstawowego (domyślnie plik BaselineProfileGenerator.kt), który obejmuje uruchamianie aplikacji z ekranu głównego i otwieranie jej za pomocą linku bezpośredniego. Precyzyjny link prowadzi bezpośrednio do kanału wiadomości w aplikacji, a nie do ekranu głównego aplikacji.

@RunWith(AndroidJUnit4::class)
@LargeTest
class BaselineProfileGenerator {

    @get:Rule
    val rule = BaselineProfileRule()

    @Test
    fun generate() {
        rule.collect(
            packageName = "com.example.app",
            includeInStartupProfile = true
        ) {
            // Launch directly into the NEWS_FEED.
            startActivityAndWait(Intent().apply {
                setPackage(packageName)
                setAction("com.example.app.NEWS_FEED")
            })
        }
    }
}

Uruchom konfigurację Generate Baseline Profile for app i znajdź reguły profilu uruchamiania w lokalizacji src/<variant>/generated/baselineProfiles/startup-prof.txt.

Wskazówki dotyczące tworzenia profili startupów

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

Po uwzględnieniu pierwszego przypadku użycia przejdź do ścieżki użytkownika w przypadku uruchamiania aplikacji. W wielu przypadkach ścieżki uruchamiania aplikacji są zgodne z tą listą:

  1. Główna aktywność programu uruchamiającego
  2. Powiadomienia, które powodują uruchomienie aplikacji
  3. Opcjonalne działania programu uruchamiającego

Przetwarzaj 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 poza ścieżkę uruchamiania i dodaj więcej ścieżek. Aby przenieść kod poza ścieżkę uruchamiania, sprawdź ślady Perfetto podczas uruchamiania aplikacji i poszukaj długotrwałych operacji. Możesz też użyć makrobenchmarkuwłączonym śledzeniem metod, aby uzyskać automatyczny i pełny wgląd w wywołania metod podczas uruchamiania aplikacji.