Instalacja profilu
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.
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
wProfileInstallReceiver
. (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ą metodyCompilationMode.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 wersji1.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ą metodyCompilationMode.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 zMacrobenchmarks
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 zMacrobenchmarks
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 wersji1.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ą metodyCompilationMode.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 katalogusrc/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 funkcjiadb 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ówH
,S
iP
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 klasaandroidx.compose.runtime.SlotTable
miałaby deskryptor o wartościLandroidx/compose/runtime/SlotTable;
.<METHOD_SIGNATURE>
to podpis metody, który zawiera nazwę, typy parametrów oraz zwracane typy metody. Na przykład metodafun isPlaced(): Boolean
naLayoutNode
ma podpisisPlaced()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 plikiemAndroidManifset.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.