Profilowanie wydajności aplikacji

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.

Tabela 1. Podsumowanie kluczowych różnic między aplikacjami z możliwością debugowania a aplikacjami 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:

Profilowane menu kompilacji jednym kliknięciem.
  • 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.

    Profilowanie z niskim nadmiarem.
  • Profil „aplikacja” z pełnymi danymi uruchamia programy profilujące CPU, pamięć i energię.

    Profilowanie z pełnymi danymi.

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:

  1. 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
              }
            }
          
  2. W Android Studio wybierz Kompilacja > Wybierz wariant kompilacji... i wybierz wariant wersji.

Zmień wersję na profilowalną

  1. 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"/>

  2. 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:

  1. Uruchom aplikację z poziomu emulatora programistycznego lub urządzenia.

  2. W Android Studio uruchom program profilujący, wybierając Widok > Okna narzędzi > Profiler.

  3. Po uruchomieniu aplikacji kliknij przycisk Przycisk plusa do profilowania w narzędziu do profilowania, aby wyświetlić menu. Wybierz urządzenie, a następnie wybierz wpis aplikacji w sekcji Inne procesy profilowe.

    Menu profilowania
  4. 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ęć.

    Profilowanie widoku sesji
    Menu profilowania
    Menu profilowania

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:

  1. Wybierz Uruchom > Edytuj konfiguracje.
  2. W panelu po lewej stronie wybierz moduł aplikacji.
  3. Kliknij kartę Profilowanie, a następnie zaznacz opcję Włącz dodatkową obsługę starszych urządzeń (poziom interfejsu API < 26).
  4. 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:

  1. Upewnij się, że program profilujący nie działa obecnie w Android Studio.
  2. 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.

  3. W zależności od systemu operacyjnego uruchom profiler.exe lub profiler.sh. Pojawi się ekran powitalny Android Studio. Gdy ekran powitalny zniknie, otworzy się okno programu profilującego.