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 wartość 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 startupu są takie same jak w przypadku tworzenia profilu podstawowego.

Domyślny sposób tworzenia profilu startowego polega na użyciu szablonu modułu Generator profilu podstawowego w Android Studio. Obejmuje to interakcje z startupami, 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 otwieranie jej za pomocą precyzyjnego linku.

Poniższy fragment kodu pokazuje generator profilu podstawowego (domyślnie plik BaselineProfileGenerator.kt), który obejmuje uruchamianie za pomocą linku bezpośredniego. Precyzyjny link prowadzi bezpośrednio do kanału wiadomości w 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 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 śledź ścieżkę 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.