Aplikacja ma słabą wydajność, jeśli reaguje wolno, wyświetla płynne animacje, zawiesza się lub zużywa zbyt dużo energii. Rozwiązywanie problemów z wydajnością obejmuje określenie obszarów, w których aplikacja zużywa nieefektywne zasoby, np. procesor, pamięć, kartę graficzną, sieć czy baterię urządzenia.
Aby wykryć i rozwiązać te problemy, skorzystaj z narzędzi i technik profilowania i analizy porównawczej opisanych w tym temacie. Techniki pomiaru skuteczności oraz przykłady ich wykorzystania do rozwiązywania konkretnych problemów znajdziesz w sekcji Pomiar skuteczności.
Android Studio udostępnia kilka narzędzi do profilowania, które pomagają znaleźć i wizualizować potencjalne problemy:
- Program profilujący procesora pomaga śledzić problemy z wydajnością czasu działania.
- Program do profilowania pamięci pomaga śledzić alokacje pamięci.
- Program do profilowania energii śledzi zużycie energii, co może się przyczynić do wyczerpywania się baterii.
Te narzędzia są zgodne z Androidem 5.0 (poziom interfejsu API 21) i nowszymi. Więcej informacji o narzędziach znajdziesz na innych stronach tej sekcji przewodnika użytkownika.
Biblioteki Jetpack Benchmark umożliwiają Twojej aplikacji pomiar różnych ważnych operacji:
- Analiza porównawcza makr: służy do pomiaru ważnych przypadków użycia związanych z wydajnością, m.in. uruchamiania aplikacji i ponownego rysowania wywołanych przez takie działania jak animacje w interfejsie czy przewijanie.
- Mikroporównanie: umożliwia pomiar kosztu procesora konkretnych funkcji.
Więcej informacji o tych bibliotekach znajdziesz na stronie Analiza porównawcza aplikacji.
Aplikacje do profilowania
Profileable
to konfiguracja pliku manifestu wprowadzona w Androidzie Q. Może ono określić, czy użytkownik urządzenia może profilować tę aplikację za pomocą narzędzi takich jak Android Studio, Simpleperf czy Perfetto.
Przed profileable
większość deweloperów mogła profilować tylko aplikacje możliwe do debugowania na Androidzie, co powodowało znaczne koszty wydajności. Te koszty wydajności mogły unieważnić wyniki profilowania, zwłaszcza jeśli były związane z czasem. W tabeli 1 podsumowano różnice między aplikacjami dostępnymi do debugowania a profilowymi.
Cecha | Możliwe do debugowania | Do profilowania |
---|---|---|
Program profilujący pamięci | Pełna |
Tak: Nr:
|
Program profilujący procesora | Pełna |
Tak:
Nr:
|
Program profilujący sieci | Tak | Nie |
Program profilujący energii | Tak | Nie |
Program Power Profiler | Tak | Tak |
Monitorowanie zdarzeń | Tak | Nie |
Wprowadziliśmy funkcję Profileable
, aby deweloperzy mogli zezwolić swoim aplikacjom na udostępnianie informacji narzędziom do profilowania, a jednocześnie bardzo niskie koszty wydajności. Profilowany plik APK to zasadniczo pakiet APK wersji, w którym w sekcji <application>
pliku manifestu znajduje się wiersz <profileable android:shell="true"/>
.
Automatyczne tworzenie i uruchamianie aplikacji z funkcją profilowania
Możesz skonfigurować, skompilować i uruchomić aplikację z możliwością profilowania jednym kliknięciem. Ta funkcja wymaga wirtualnego lub fizycznego urządzenia testowego z interfejsem API na poziomie 29 lub wyższym i dostępem do Google Play. Aby skorzystać z tej funkcji, kliknij strzałkę obok ikony aplikacji do profilu i wybierz jedną z 2 opcji:
Profil „aplikacja” o niskim nadmiarze uruchamia programy profilujące CPU i pamięć. W narzędziu do profilowania Memory włączona jest tylko opcja rejestruj przydziały natywne.
Profil „aplikacja” z pełnymi danymi uruchamia programy profilujące CPU, pamięć i energię.
Ręczne tworzenie i uruchamianie aplikacji z możliwością profilowania
Aby ręcznie utworzyć aplikację do profilowania, musisz najpierw skompilować aplikację wersji, a następnie zaktualizować jej plik manifestu. Spowoduje to przekształcenie aplikacji do profilowania w aplikację, którą można profilować. Po skonfigurowaniu aplikacji możliwej do profilowania uruchom program profilujący i wybierz proces profilowy do analizy.
Tworzenie wersji aplikacji
Aby utworzyć aplikację wersji do profilowania, wykonaj te czynności:
-
Podpisz aplikację kluczem debugowania, dodając do jej pliku
build.gradle
podane niżej wiersze. Jeśli masz już działający wariant kompilacji wersji, możesz przejść do następnego kroku.buildTypes { release { signingConfig signingConfigs.debug } }
-
W Android Studio wybierz Kompilacja > Wybierz wariant kompilacji... i wybierz wariant wersji.
Zmień wersję na profilowalną
-
Przekonwertuj z powyższych aplikacji na aplikację, którą można profilować, otwierając plik
AndroidManifest.xml
i dodając ten kod w sekcji<application>
. Więcej informacji znajdziesz w artykule o tworzeniu aplikacji do udostępnienia.<profileable android:shell="true"/>
-
W zależności od wersji pakietu SDK konieczne może być dodanie poniższych wierszy do pliku
build.gradle
aplikacji.aaptOptions { additionalParameters =["--warn-manifest-validation"] }
Profilowanie aplikacji z możliwością profilowania
Aby profilować aplikację, którą można profilować, wykonaj te czynności:
-
Uruchom aplikację z poziomu emulatora programistycznego lub urządzenia.
-
W Android Studio uruchom program profilujący, wybierając Widok > Okna narzędzi > Profiler.
-
Po uruchomieniu aplikacji kliknij przycisk w narzędziu do profilowania, aby wyświetlić menu. Wybierz urządzenie, a następnie wybierz wpis aplikacji w sekcji Inne procesy profilowe.
-
Program profilujący powinien dołączyć do aplikacji. Dostępne są tylko programy do profilowania procesora i pamięci, z ograniczonymi możliwościami dla programu profilującego pamięć.
Sesje
Możesz zapisywać dane z programu profilującego jako sesje, które będą przechowywane do momentu zamknięcia Android Studio. Rejestrując informacje o profilowaniu w wielu sesjach i przełączając się między nimi, możesz porównywać wykorzystanie zasobów w różnych scenariuszach.
- Aby rozpocząć nową sesję, kliknij przycisk Rozpocznij nową sesję profilowania i z wyświetlonego menu wybierz proces aplikacji.
- Gdy rejestrujesz ślad lub przechwytujesz zrzut stosu, Android Studio dodaje te dane (wraz z aktywnością aplikacji w sieci) jako oddzielny wpis do bieżącej sesji.
- Aby zatrzymać dodawanie danych do bieżącej sesji, kliknij Zatrzymaj bieżącą sesję profilowania .
- Aby zaimportować log czasu wyeksportowany z poprzedniego uruchomienia Android Studio, kliknij Rozpocznij nową sesję programu profilującego i wybierz Wczytaj z pliku.
Włącz dodatkową obsługę starszych urządzeń (poziom interfejsu API < 26)
Aby wyświetlać dodatkowe dane profilowania na urządzeniu z Androidem 7.1 lub starszym, Android Studio musi wstrzyknąć logikę monitorowania do skompilowanej aplikacji. Te dodatkowe dane profilowania obejmują:
- Oś czasu zdarzenia we wszystkich oknach programu profilującego
- Liczba przydzielonych obiektów w programie profilującym pamięci
- Zdarzenia czyszczenia pamięci w narzędziu Memory Profiler
- Szczegółowe informacje o wszystkich przesyłanych plikach w programie profilującym sieci
Aby włączyć dodatkową obsługę starszych urządzeń, wykonaj te czynności:
- Wybierz Uruchom > Edytuj konfiguracje.
- W panelu po lewej stronie wybierz moduł aplikacji.
- Kliknij kartę Profilowanie, a następnie zaznacz opcję Włącz dodatkową obsługę starszych urządzeń (poziom interfejsu API < 26).
- Skompiluj i uruchom aplikację ponownie.
Włączenie dodatkowej obsługi starszych urządzeń spowalnia proces kompilacji, dlatego należy włączyć tę funkcję tylko wtedy, gdy chcesz rozpocząć profilowanie aplikacji.
Uruchamianie samodzielnych narzędzi profilujących
Samodzielne narzędzia do profilowania w Android Studio umożliwiają profilowanie aplikacji bez konieczności uruchamiania pełnego środowiska IDE Android Studio.
Aby uruchomić samodzielne programy profilujące, wykonaj te czynności:
- Upewnij się, że program profilujący nie działa obecnie w Android Studio.
Przejdź do katalogu instalacji i przejdź do katalogu
bin
:Windows/Linux:
studio-installation-folder/bin
macOS: używanie samodzielnych programów profilujących nie jest obsługiwane w systemie macOS.
- W zależności od systemu operacyjnego uruchom
profiler.exe
lubprofiler.sh
. Pojawi się ekran powitalny Android Studio. Gdy ekran powitalny zniknie, otworzy się okno programu profilującego.