Zaawansowany monitoring akumulatora – Battery Historian

W ustawieniach Androida można znaleźć informacje na temat zużycia akumulatora przez daną aplikację. Niestety te informacje są zbyt ogólne do wykrywania niewłaściwego zarządzania zasobami baterii. Patrząc z punktu programisty te informacje są mało precyzyjne aby stwierdzić w jaki sposób aplikacja korzysta z zasobów urządzenia. W wersji KitKat pojawiło się polecenie systemowe batterystats. Polecenie to dostarcza mnóstwo danych na temat wykorzystania akumulatora. Dostępne dane są bardzo szczegółowe opisujące działanie aplikacji. Wadą tego rozwiązania jest to, że dane wynikowe są w formie tekstowej, a jej analiza wymaga dużego nakładu pracy i czasu aby dobrze przetestować aplikację. Aby uprościć to zadanie firma Google stworzyła narzędzie Battery Historian które tworzy plik w formacie HTML.

1. Tworzenie raportu

Na początku trzeba zainstalować Docker’a i pobrać obraz odpowiedni za pomocą komendy:

docker run -p 1234:9999 gcr.io/android-battery-historian/stable:3.0 --port 9999

Wartość „1234” możemy zmienić na własną. Jak wszystko pobierze wchodzimy na stronę localhost:1234. I ukazuje się nam panel w którym trzeba wskazać plik z raportem. Aby wygenerować raport musimy skorzystać z narzędzia ADB. Na początku musimy zresetować statystyki baterii za pomocą komendy:

adb shell dumpsys batterystats --reset

Teraz odłączamy telefon od komputera. Zaczynasz testować aplikację. Po zakończeniu podłączamy ponownie telefon do komputera. I generujemy raport za pomocą komendy (dla wersji Android 7+):

adb bugreport bugreport.zip

Jeżeli korzystasz z Androida 6 lub 5. Możesz spróbować generować raport za pomocą:

adb bugreport > bugreport.txt

niestety ta komenda nie generuje mi poprawnego raportu który mógłbym odtworzyć w battery historian. Dlatego jeśli masz podobny problem wejdź w ustawienia telefonu a następnie w opcję programistyczne, tam znajdziesz opcję „zgłoś błąd” po wykonaniu raportu prześlij plik raportu na komputera, a potem wróć na stronę localhost:1234 i wyślij plik do analizy.

2. Czytanie raportu Battery Historian

Czasy w raporcie są prezentowane w Czasie UTC. Poniżej zostanie przedstawiony test który trwał około 30 min. W tym czasie działała aplikacja Youtube z przerwami (wyłączony ekran). Część raportu wygląda następująco:
raport Battery Historian
W zakładce Historian 2.0, znajdują się informacje w formie wykresu o ilości energii pobieranej podczas testu w jednostce czasu. Widzimy tam w jakich momentach było wykorzystywane wifi, włączony ekran itp. Jeżeli najedźmy myszką na któryś pasek dostaniemy dodatkowe informacje o danym zasobie w określonym czasie.
Przejdźmy do sekcji App Selection. W zakładce System Stats dostajemy informacje podobne jak wyżej tylko w innej formie i bardziej szczegółowe. Zwróć uwagę, na to, że niektóre pola da się kliknąć, dzięki temu przejdziesz do wybranej informacji. Na przykład w teście widzimy, ze telefon w czasie testu był wybudzany przez usługę alarm aż 28 razy, jeżeli klikniemy w napis „App Wakeup Alarms” dostaniemy spis aplikacji które telefon wybudzały. Jeżeli rozwiniemy drzewko” Device’s Power Estimates:” dostaniemy listę aplikacji/procesów które działały w czasie testu i ile pobierały energii.
app Battery Historian
Jako, że nas bardziej interesuje testowanie aplikacji to teraz po lewej stronie wybieramy aplikację w naszym przypadku sprawdźmy youtube. Widzimy, że aplikacja zużyła około 1,2% baterii, była na pierwszym planie 3 razy przez 16 min. Pobrała 80 MB i wysłała 2 MB (jeden film – ciekawe co wysyłała…). Rozwijając poszczególne kolejne drzewka możemy też sprawdzić jakie serwisy ma aplikacja, jakie sensory były wykorzystywane itd.

3. Podsumowanie

Narzędzie Battery Historian dostarcza nam mnóstwo informacji o wykorzystywaniu zasobów w urządzeniu. Ułatwia w bardzo porosty sposób analizowanie poszczególnych aplikacji. Dzięki temu bardzo łatwo wykryć operacje powodujące szybkie wyczerpanie akumulatora. We wpisie został przedstawiony krótki test aplikacji YouTube. Zachęcam do przeprowadzania własnych testów i analiz związanych z pobieranie energii z baterii w telefonach przez poszczególne aplikacje.

Co dalej?

  • Polub stronę MYENV na Facebooku oraz śledź mnie na Twitterze
  • Zachęcam do komentowania i pisania propozycji tematów, o których chcesz przeczytać
  • Poleć ten wpis za pomocą poniższych przycisków. Będę Ci za to bardzo wdzięczny 🙂
  • Życzę Ci miłego dnia i miłego kodowania 🙂