Instalacja profilu

  
Umożliwia bibliotekom wstępne wypełnianie logów czasu kompilacji z wyprzedzeniem, które mają być odczytywane przez ART.
Najnowsza aktualizacja Wersja stabilna Kandydat do publikacji Wersja Beta Wersja alfa
7 lutego 2024 r. 1.3.1 - - 1.4.0-alfa01

Deklarowanie zależności

Aby dodać zależność od ProfileInstaller, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Google Maven.

W pliku build.gradle aplikacji lub modułu dodaj zależności artefaktów, których potrzebujesz:

Odlotowy

dependencies {
    implementation "androidx.profileinstaller:profileinstaller:1.3.1"
}

Kotlin

dependencies {
    implementation("androidx.profileinstaller:profileinstaller:1.3.1")
}

Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.

Opinia

Twoja opinia pomoże nam ulepszyć Jetpack. Daj nam znać, jeśli znajdziesz nowe wydania lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nową bibliotekę, przejrzyj problemy z tą biblioteką. Możesz oddać głos w ramach istniejącego problemu, klikając przycisk gwiazdki.

Utwórz nowy numer

Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.

Wersja 1.4

Wersja 1.4.0-alfa01

7 lutego 2024 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.4.0-alpha01 została zwolniona. Wersja 1.4.0-alpha01 zawiera te zatwierdzenia.

Poprawki błędów

  • Dodano kod błędu dla braku osadzonego profilu w weryfikatorze profilu. (Ifb109, b/313928520)
  • Naprawiono awarię podczas usuwania cieniowania na Androidzie U (API 34) oraz w emulatorach. (I031ca, b/274314544)
  • Włączono obsługę Androida U w instalatorze profilu. (Iaf177)
  • Rozwiązaliśmy problem z instalatorem profilu na Androidzie U, który powodował, że bieżący profil nie był pusty podczas uruchamiania procesu. (Ie3899)
  • Napraw transkodowanie mapy bitowej metody w formacie profilu V_015S. (aosp/2906631) i (aosp/2847740)

Wersja 1.3

Wersja 1.3.1

3 maja 2023 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.3.1 została zwolniona. Wersja 1.3.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Włączono obsługę Androida U w instalatorze profilu (Iaf177).
  • Rozwiązaliśmy problem z instalatorem profilu na Androidzie U, który powodował, że bieżący profil nie był pusty podczas uruchamiania procesu. (Ie3899)

Wersja 1.3.0

22 marca 2023 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.3.0 została zwolniona. Wersja 1.3.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.2.0

  • Naprawiono NullPointerException w ProfileInstallReceiver. (b/243851384)
  • Dodano interfejs API ProfileVerifier umożliwiający sprawdzanie z poziomu aplikacji, czy profil podstawowy został skompilowany, zaplanowany lub nie został skompilowany (I263a4, b/246653809).
  • Dodaje nową transmisję powłoki, która umożliwia narzędziu Macrobenchmark pełne opróżnienie na dysku danych profilu z pamięci, aby mogły one zostać uwzględnione podczas generowania profilu podstawowego. Jest to wymagane do używania biblioteki analizy porównawczej makr do rejestrowania podstawowych profili za pomocą funkcji BaselineProfileRule i do oceny skuteczności profilu za pomocą metody CompilationMode.Partial(warmupIterations).
  • Dodaliśmy kod diagnostyczny, aby wykrywać skompresowane profile bazowe. Skompresowanych profili podstawowych nie można zainstalować w testach porównawczych makr ani w środowisku produkcyjnym ze względu na obciążenie procesora. W takim przypadku należy zaktualizować aplikację do wersji Studio/AGP Electric Eel lub bundletool do wersji 1.13.1(I86413, b/261998144).
  • Dodano punkty zaczepienia do analizy porównawczej makr, które umożliwiają przechwytywanie profili i usuwanie pamięci podręcznej programu do cieniowania, które są wymagane do generowania profili bazowych lub analizy porównawczej makr na urządzeniach bez dostępu do roota (Ie0a7d, b/250083467, b/253094958) (Ia5171, b/231455742)

Wersja 1.3.0-rc01

8 marca 2023 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.3.0-rc01 została opublikowana bez zmian od czasu ostatniej wersji beta. Wersja 1.3.0-rc01 zawiera te zatwierdzenia.

Wersja 1.3.0-beta01

8 lutego 2023 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.3.0-beta01 została zwolniona. Wersja 1.3.0-beta01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Wyłącza obsługę obsługi profili skompresowanych – otwarcie i dekompresja prowadzi do spadku wykorzystania procesora o ponad 10 ms podczas uruchamiania, dlatego zamiast tego dodaliśmy diagnostykę wykrywającą nieprawidłowo skompresowane profile podstawowe. (I86413, b/261998144)

Wersja 1.3.0-alfa03

11 stycznia 2023 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.3.0-alpha03 została zwolniona. Wersja 1.3.0-alpha03 zawiera te zatwierdzenia.

Poprawki błędów

  • Umożliwia obsługę skompresowanych i nieskompresowanych profili podstawowych (Ic61a0)
  • Popraw MacrobenchmarkScope.dropShaderCache(), aby nie ulegał już awarii, naprawiając rejestr komunikatów w pliku manifestu profilu instalatora (I5c728, b/258619948)

Wersja 1.3.0-alfa02

9 listopada 2022 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.3.0-alpha02 została zwolniona. Wersja 1.3.0-alpha02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano punkt zaczepienia dla testów porównawczych, który umożliwia pomijanie pamięci podręcznej programu cieniowania w celu zapewnienia stabilnej wydajności uruchamiania „na zimno” zwłaszcza w przypadku kompilowania przy użyciu profili z iteracji używanych w ramach rozgrzewki. Ta aktualizacja jest wymagana do pomiaru uruchomień „na zimno” za pomocą narzędzia benchmark-macro-junit4:1.2.0-alpha05 lub nowszego. Informacje o zmianach w interfejsie API biblioteki Benchmark znajdziesz na stronie Test porównawczy w wersji 1.2.0-alpha07. (Ia5171, b/231455742)

Wersja 1.3.0-alfa01

24 października 2022 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.3.0-alpha01 została zwolniona. Wersja 1.3.0-alpha01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano interfejs API ProfileVerifier, który umożliwia sprawdzanie z poziomu aplikacji, czy profil podstawowy został skompilowany, zaplanowany lub nie ma go wcale (I263a4, b/246653809).
  • Dodaje nową transmisję powłoki, która umożliwia narzędziu Macrobenchmark pełne opróżnienie na dysku danych profilu z pamięci, aby mogły one zostać uwzględnione podczas generowania profilu podstawowego. Jest to wymagane do używania biblioteki analizy porównawczej makr do rejestrowania podstawowych profili za pomocą funkcji BaselineProfileRule i do oceny skuteczności profilu za pomocą metody CompilationMode.Partial(warmupIterations). (Ie0a7d, b/250083467, b/253094958)

Wersja 1.2.2

Wersja 1.2.2

11 stycznia 2023 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.2.2 została zwolniona. Wersja 1.2.2 zawiera te zatwierdzenia.

Poprawki błędów

  • Umożliwia obsługę skompresowanych i nieskompresowanych profili podstawowych (Ic61a0)

Wersja 1.2.1

Wersja 1.2.1

7 grudnia 2022 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.2.1 została zwolniona. Wersja 1.2.1 zawiera te zatwierdzenia.

Nowe funkcje

  • Włącz instalator profilu dla S_V2 (API 32) i TIRAMISU (API 33) (b/254900303).

Wersja 1.2.0

Wersja 1.2.0

27 lipca 2022 roku

Aplikacja androidx.profileinstaller:profileinstaller:1.2.0 została zwolniona. Wersja 1.2.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.1.0

  • Dodaliśmy obsługę formatu profilu ART używanego na Androidzie 12 i w przyszłości.
  • Dodaj nowe interfejsy API w ramach ProfileInstallReceiver, aby uzyskać bardziej spójne wyniki z Macrobenchmarks podczas korzystania z profili podstawowych.

Wersja 1.2.0-rc01

15 czerwca 2022 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.2.0-rc01 została zwolniona. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.

  • Ta wersja jest taka sama jak androidx.profileinstaller:profileinstaller:1.2.0-beta03.

Wersja 1.2.0-beta03

1 czerwca 2022 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.2.0-beta03 została zwolniona. Wersja 1.2.0-beta03 zawiera te zatwierdzenia.

Wersja 1.2.0-beta02

18 maja 2022 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.2.0-beta02 została zwolniona. Wersja 1.2.0-beta02 zawiera te zatwierdzenia.

  • Obsługa wersji 1.2.0-beta02 nie wymaga wprowadzania żadnych zmian.

Wersja 1.2.0-beta01

11 maja 2022 roku

Aplikacja androidx.profileinstaller:profileinstaller:1.2.0-beta01 została zwolniona. Wersja 1.2.0-beta01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodaj nowe interfejsy API w ramach ProfileInstallReceiver, aby uzyskać bardziej spójne wyniki z Macrobenchmarks podczas korzystania z profili podstawowych. (If2ae5, b/215740637)

Poprawki błędów

  • Instalator profilu generuje pomocny komunikat, gdy próbuje użyć formatu metadanych V_001 na Androidzie 12 i nowszych. (Aosp/1978526, b/217502387)
  • Instalator profilu korzysta teraz z androidx.startup w wersji 1.1.1. (Aosp/2077099, b/229828376)

Wersja 1.2.0-alfa02

26 stycznia 2022 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.2.0-alpha02 została zwolniona. Wersja 1.2.0-alpha02 zawiera te zatwierdzenia.

Ta wersja jest taka sama jak 1.2.0-alpha01.

Wersja 1.2.0-alfa01

12 stycznia 2022 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.2.0-alpha01 została zwolniona. Wersja 1.2.0-alpha01 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodano obsługę formatu profilu ART używanego w Androidzie 12 i w przyszłości.

Wersja 1.1.0

Wersja 1.1.0

9 lutego 2022 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.1.0 została zwolniona. Wersja 1.1.0 zawiera te zatwierdzenia.

Wersja 1.1.0-rc01

15 grudnia 2021 roku

Wersja androidx.profileinstaller:profileinstaller:1.1.0-rc01 jest publikowana bez aktualizacji od wersji 1.1.0–beta04. Wersja 1.1.0-rc01 zawiera te zatwierdzenia.

Wersja 1.1.0-beta04

Grudzień 1, 2021

Aplikacja androidx.profileinstaller:profileinstaller:1.1.0-beta04 została zwolniona. Wersja 1.1.0-beta04 zawiera te zatwierdzenia.

Wersja 1.1.0-beta03

17 listopada 2021 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.1.0-beta03 została zwolniona. Wersja 1.1.0-beta03 zawiera te zatwierdzenia.

Poprawki błędów

  • Zaktualizowano, aby obsługiwać funkcję Tworzenie wiadomości w wersji 1.1.0-beta03

Wersja 1.1.0-beta02

3 listopada 2021 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.1.0-beta02 została zwolniona. Wersja 1.1.0-beta02 zawiera te zatwierdzenia.

Poprawki błędów

  • Zaktualizowano, aby obsługiwać funkcję Tworzenie wiadomości w wersji 1.1.0-beta02

Wersja 1.1.0-beta01

27 października 2021 roku

Aplikacja androidx.profileinstaller:profileinstaller:1.1.0-beta01 została zwolniona. Wersja 1.1.0-beta01 zawiera te zatwierdzenia.

  • Bez zmian od wersji 1.1.0-alfa07.

Wersja 1.1.0-alfa07

13 października 2021 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.1.0-alpha07 została zwolniona. Wersja 1.1.0-alpha07 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodano obsługę profm na Androidzie N.

Wersja 1.1.0-alfa06

29 września 2021 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.1.0-alpha06 została zwolniona. Wersja 1.1.0-alpha06 zawiera te zatwierdzenia.

Poprawki błędów

  • Napraw problemy z transkodowaniem instalatora profilu w N, O i O_MR1. (I12d75)

Wersja 1.1.0-alfa05

15 września 2021 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.1.0-alpha05 została zwolniona. Wersja 1.1.0-alpha05 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono transkodowanie profilu Androida Nougat i Androida Oreo na potrzeby pakietów APK multidex.

Wersja 1.1.0-alfa04

1 września 2021 roku

Aplikacja androidx.profileinstaller:profileinstaller:1.1.0-alpha04 została zwolniona. Wersja 1.1.0-alpha04 zawiera te zatwierdzenia.

Poprawki błędów

  • Popraw parametr ProfileInstaller, aby ułatwić aplikacjom korzystającym z profili podstawowych wykonywanie testów porównawczych makr za pomocą metody CompilationMode.BaselineProfile. (I42657, b/196074999)

Wersja 1.1.0-alfa03

18 sierpnia 2021 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.1.0-alpha03 została zwolniona. Wersja 1.1.0-alpha03 zawiera te zatwierdzenia.

Poprawki błędów

  • Zmień zachowanie instalatora profilu, aby zarejestrować parametr PackageInfo.lastUpdatedTime w pliku w katalogu z plikami aplikacji i porównać ten parametr przed zainstalowaniem profilu przy następnym uruchomieniu. (Ib93d1)
  • Dostosuj format profilu na urządzeniach P, Q i R, aby był zgodny z wymaganiami ART (I84e89)

Wersja 1.1.0-alfa02

4 sierpnia 2021 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.1.0-alpha02 została zwolniona. Wersja 1.1.0-alpha02 zawiera te zatwierdzenia.

Zaktualizowano w celu zapewnienia zgodności z tworzeniem w wersji 1.1.0-alfa01.

Wersja 1.1.0-alfa01

21 lipca 2021 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.1.0-alpha01 została zwolniona. Wersja 1.1.0-alpha01 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd, który w niektórych okolicznościach uruchamiał tryb rygorystyczny.

Wersja 1.0

Wersja 1.0.4

13 października 2021 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.0.4 została zwolniona. Wersja 1.0.4 zawiera te zatwierdzenia.

  • Zaktualizowano do obsługi tworzenia wiadomości w wersji 1.0.4

Wersja 1.0.3

29 września 2021 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.0.3 została zwolniona. Wersja 1.0.3 zawiera te zatwierdzenia.

  • Zaktualizowano do obsługi tworzenia wiadomości w wersji 1.0.3

Wersja 1.0.2

1 września 2021 roku

Aplikacja androidx.profileinstaller:profileinstaller:1.0.2 została zwolniona. Wersja 1.0.2 zawiera te zatwierdzenia.

Poprawki błędów

  • Dodano transkodowanie profilu na urządzeniach P, Q i R. Ta zmiana oznacza, że te urządzenia będą transkodować profil, dzięki czemu ART będzie zawsze mógł korzystać z zapisanego profilu. Wcześniej transkodowanie na tych platformach było pomijane, przez co czasami ART nie mógł przetworzyć profilu źródłowego. Brak zmian w interfejsach API dla programistów.

Wersja 1.0.1

4 sierpnia 2021 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.0.1 została zwolniona. Wersja 1.0.1 zawiera te zatwierdzenia.

Zaktualizowano w celu zapewnienia zgodności z tworzeniem w wersji 1.0.1.

Wersja 1.0.0

28 lipca 2021 roku

Aplikacja androidx.profileinstaller:profileinstaller:1.0.0 została zwolniona. Wersja 1.0.0 zawiera te zatwierdzenia.

Główne funkcje wersji 1.0.0

Instalator profili to nowa biblioteka, która umożliwia bibliotekom i aplikacjom definiowanie „reguł profilu” i łączenie informacji o profilu ART z plikiem APK. Ta biblioteka instaluje te profile po uruchomieniu aplikacji. Dzięki temu można zwiększyć wydajność aplikacji.

Więcej informacji o tych regułach profilu i sposobie ich działania znajdziesz w szczegółowych informacjach o wersji 1.0.0-beta01.

Wersja 1.0.0-rc02

14 lipca 2021 roku

Aplikacja androidx.profileinstaller:profileinstaller:1.0.0-rc02 została zwolniona. Wersja 1.0.0-rc02 zawiera te zatwierdzenia.

Wersja 1.0.0-rc01

1 lipca 2021 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.0.0-rc01 została zwolniona. Wersja 1.0.0-rc01 zawiera te zatwierdzenia.

To wersja RC bez zmian w stosunku do wersji beta.

Wersja 1.0.0-beta01

16 czerwca 2021 r.

Aplikacja androidx.profileinstaller:profileinstaller:1.0.0-beta01 została zwolniona. Wersja 1.0.0-beta01 zawiera te zatwierdzenia.

Cel biblioteczny

Instalator profili to nowa biblioteka, która umożliwia bibliotekom i aplikacjom definiowanie „reguł profilu” i łączenie informacji o profilu ART z plikiem APK. Ta biblioteka instaluje te profile po uruchomieniu aplikacji. Dzięki temu można zwiększyć wydajność aplikacji.

Ta instalacja profilu odbywa się przy użyciu biblioteki androidx.startup. Jeśli z jakiegoś powodu użytkownik zechce wyłączyć instalację profilu, może zmodyfikować plik manifestu, aby go usunąć:


       <provider
           android:name="androidx.startup.InitializationProvider"
           android:authorities="${applicationId}.androidx-startup"
           android:exported="false"
           tools:node="merge">
           <meta-data android:name="androidx.profileinstaller.ProfileInstallerInitializer"
                     tools:node="remove" />
       </provider>

Jest to szczególnie przydatne, jeśli Twoja aplikacja ma nieproste wymagania dotyczące uruchamiania i chcesz ręcznie aktywować instalację profilu, korzystając z interfejsu API ProfileInstaller.writeProfile.

Co to są reguły profilu?

  • Reguły profilu biblioteki są określone w pliku tekstowym baseline-prof.txt znajdującym się w katalogu src/main lub podobnym. Każda reguła jest podana w pliku w oddzielnym wierszu. W tym przypadku reguła jest wzorcem dopasowywania do metod lub klas w bibliotece. Składnia tych reguł jest nadzbiorem formatu profilu ART zrozumiałego dla człowieka, który jest używany podczas korzystania z funkcji adb shell profman --dump-classes-and-methods .... Reguły te mogą mieć 2 formy kierowania na metody lub klasy.

  • Reguła metody będzie miała następujący wzorzec:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • Reguła dotycząca klasy będzie miała następujący wzorzec:

    <CLASS_DESCRIPTOR>
    
  • <FLAGS> to co najmniej jeden ze znaków H, S i P wskazujący, czy ta metoda ma być oznaczona jako „Hot”, „Startup” lub „Post Startup”.

  • <CLASS_DESCRIPTOR> to deskryptor klasy, do której należy metoda docelowa. Na przykład klasa androidx.compose.runtime.SlotTable miałaby deskryptor o wartości Landroidx/compose/runtime/SlotTable;.

  • <METHOD_SIGNATURE> to podpis metody, który zawiera nazwę, typy parametrów oraz zwracane typy metody. Na przykład metoda fun isPlaced(): Boolean na LayoutNode ma podpis isPlaced()Z.

  • Te wzorce mogą zawierać symbole wieloznaczne (**, * i ?), aby jedna reguła obejmowała wiele metod lub klas.

Do czego służą reguły?

  • Metoda z flagą H wskazuje, że jest to metoda „gorąca” i należy ją skompilować z wyprzedzeniem.

  • Metoda z flagą S wskazuje, że jest ona wywoływana podczas uruchamiania i powinna zostać skompilowana z wyprzedzeniem, aby uniknąć kosztów kompilacji i interpretowania jej podczas uruchamiania.

  • Metoda z flagą P wskazuje, że jest wywoływana po uruchomieniu.

  • Klasa znajdująca się w tym pliku wskazuje, że jest używana podczas uruchamiania i powinna być wstępnie przypisana na stercie, aby uniknąć kosztów ładowania klas.

Jak to działa?

  • Biblioteki mogą definiować te reguły, które zostaną spakowane do artefaktów AAR. Podczas tworzenia pliku APK zawierającego te artefakty reguły te są scalane, a scalone reguły są wykorzystywane do stworzenia kompaktowego pliku binarnego ART odpowiedniego dla danego pliku. ART może wykorzystać ten profil po zainstalowaniu pakietu APK na urządzeniach, aby z wyprzedzeniem skompilować określony podzbiór aplikacji w celu zwiększenia jej wydajności, zwłaszcza przy pierwszym uruchomieniu. Pamiętaj, że nie będzie to miało wpływu na aplikacje z możliwością debugowania.

  • Pliki reguł powinny mieć nazwę baseline-prof.txt i umieść w katalogu głównym głównego zestawu źródłowego (powinien to być plik równorzędne z plikiem AndroidManifset.xml)

  • Obecnie te pliki będą używane tylko wtedy, gdy korzystasz z wtyczki do obsługi Gradle na Androidzie w wersji 7.0 lub nowszej. Te pliki są obecnie włączone tylko z flagą w gradle.properties:

    # Enable adding baseline-prof.txt files to AAR artifacts, and binary profiles to APKs
    android.experimental.enableArtProfiles=true
    

Profile wymagają salda

  • Prawidłowo utworzone profile, które poprawnie nadają priorytet metodom i klasom, które będą na ścieżce startowej, oraz mają kluczowe znaczenie dla wydajności. Jednak uwzględnienie zbyt wielu metod lub klas w profilach może mieć naprawdę negatywny wpływ na wykorzystanie pamięci i wykorzystanie dysku. Dlatego w przypadku definiowania własnych reguł profilu najlepiej jest zacząć ostrożnie.