Jak działa GSam, co robi na urządzeniu, jak zlicza statystyki oraz co musisz zrobić żeby go ustawić. Co powinieneś wiedzieć.
Z tłumaczenia od samego autora:
Ulepszone statystyki dla Androida Pie i nowszych wersji
27 grudnia 2019
Android w dalszym ciągu utrudnia zbieranie statystyk przez GSam Battery Monitor. To powiedziawszy, zmiany są w większości dobre z punktu widzenia bezpieczeństwa, a Google umożliwił dalszy dostęp do większości danych – wymaga to jedynie pewnych przeróbek.
Statystyki standardowe i ulepszone
Standard: w przypadku standardowych statystyk (które otrzymasz, jeśli nie uruchomisz żadnych poleceń ADB), GSam śledzi takie rzeczy, jak użycie Bluetooth, telefonu, sieci i ekranu, korzystając ze standardowych interfejsów Androida. Wszystkie one wymagają, aby GSam był cały czas uruchomiony jako usługa w tle. GSam jest dość wydajny, więc powinien mieć znikomy wpływ na baterię.
Ulepszone: W trybie rozszerzonym użytkownik musi zapewnić GSam dostęp do uprawnienia BATTERY_STATS . Dzięki temu GSam ma dostęp do dużej ilości danych gromadzonych przez Androida. W KitKat Android usunął możliwość żądania przez aplikacje dostępu do tego uprawnienia. Jednak w Lollipop i później częściowo przywrócono tę możliwość, umożliwiając użytkownikowi jawne udzielenie dostępu aplikacji za pośrednictwem ADB. Wymaga to od użytkownika podłączenia telefonu do komputera, zainstalowania ADB i uruchomienia polecenia. Jest to warte wysiłku ze względu na uzyskiwane statystyki, jednak nie oczekuję, że większość użytkowników to zrobi!
Ulepszone zmiany w Androidzie P
Począwszy od wersji GSam 3.39, GSam będzie używać kombinacji trybu standardowego i rozszerzonego do gromadzenia statystyk. Oznacza to, że w przypadku statystyk ogólnosystemowych używa trybu standardowego, a w przypadku statystyk specyficznych dla aplikacji (widocznych na ekranach App Sucker) GSam użyje trybu ulepszonego.
Przyczyna tego jest złożona.
- Aby opublikować aktualizację w Sklepie Play, Google wymaga, aby wszystkie aplikacje miały wersję Target SDK n lub n-1 . Innymi słowy, jeśli najnowsza wersja Androida to Q, musisz mieć docelową wersję SDK P lub nowszą. Oznacza to, że wersja 3.39 GSam wymaga aktualizacji Target SDK do wersji P. Ma to konsekwencje.
- Android zaczął ograniczać dostęp do niepublicznych interfejsów . Niestety GSam w dużym stopniu opiera się na niepublicznych interfejsach i technice zwanej refleksją. Android pozwolił starszym aplikacjom na dalszy dostęp do interfejsów API, aby nie psuć działania, ale każda zaktualizowana aplikacja musi być zgodna z nowymi zasadami. To wszystko ma sens - to po prostu psuje GSam 🙂
Na szczęście Android zapewnia podobny poziom dostępu do statystyk baterii dla aplikacji poprzez API HealthStats . Dlatego GSam 3.39 został napisany tak, aby wykorzystać te formalne interfejsy w celu uzyskania dostępu do wszystkich statystyk specyficznych dla aplikacji. Nadal wymagają one dostępu do uprawnienia BATTERY_STATS, ale poza tym zapewniają (prawie) ten sam poziom szczegółowości (ograniczenia i obejścia znajdziesz poniżej).
Ograniczenia ulepszonych statystyk w wersji P i nowszych (patrz obejście poniżej)
Statystyki całego systemu:
- Poziomy jasności ekranu : nie śledzimy tego ze względu na wpływ śledzenia na wydajność (zbyt często zmienia się jasność).
- Poziomy sygnału radiowego telefonu : nie śledzimy tego z tego samego powodu, dla którego nie śledzimy jasności ekranu.
Statystyki aplikacji (w obszarze Użycie aplikacji/Przyssawka aplikacji)
- Wiele profili — np. profil osobisty lub służbowy : w systemie Android można mieć wiele profili. Często aplikacje służbowe działają w profilu służbowym oddzielnie od aplikacji w profilu osobistym. Prawdopodobnie zauważysz, że konieczne może być zainstalowanie tej samej aplikacji w obu profilach. Ze względów bezpieczeństwa GSam nie może zbierać informacji o aplikacjach działających poza profilem, w którym jest uruchomiony. Jeśli więc potrzebujesz szczegółowych informacji na temat korzystania z aplikacji w swoim profilu do pracy, musisz zainstalować w nim inną instancję GSam. Tak, jest to dość duże ograniczenie, jeśli masz profile służbowe (na szczęście większość użytkowników ich nie ma) – poniżej znajdziesz obejście tego problemu.
- Stopniowanie procesora : Mocy zużywanej przez procesor nie można określić tak dokładnie. Wcześniej GSam sprawdzał, ile czasu aplikacja spędziła na działaniu przy różnych częstotliwościach procesora (z których każdy pobierał inny poziom energii). Teraz musimy zebrać wszystkie częstotliwości do jednego wiadra i uśrednić je.
- Wakelocki jądra: Nie ma już możliwości gromadzenia wakelocków jądra.
Rozwiązanie - przywróć pełne statystyki.
Na szczęście możliwe jest przywrócenie w pełni ulepszonych statystyk, nawet na P i Q, umożliwiając GSamowi dostęp do tego, co Android uznał za ukryte apis . Wymaga uruchomienia innego polecenia ADB i, co ważniejsze, nie jest specyficzne dla GSam. Krótko mówiąc, nie tylko umożliwia GSam dostęp do ukrytych interfejsów API, ale umożliwia KAŻDEJ aplikacji dostęp do ukrytych interfejsów API.
Czy jest to kwestia bezpieczeństwa? Tak - w pewnym sensie. To powiedziawszy, starsze aplikacje nadal mogą uzyskiwać dostęp do tych interfejsów API, ale Google próbuje od tego odciągnąć ludzi. Z punktu widzenia bezpieczeństwa umożliwia GSam dostęp do statystyk dotyczących aplikacji spoza jego profilu.
W systemie Android Q i nowszych uruchom następujące polecenie ADB:
adb shell settings put global hidden_api_policy 1
W systemie Android P uruchom następujące polecenie ADB:
adb shell settings put global hidden_api_policy_p_apps 1
Na koniec uruchom ponownie GSam (wymuś zamknięcie).
Dalsze pytania proszę już kierować do dewelopera aplikacji.
Źródło
Uprawnienie android.permission.BATTERY_STATS - status - niskie ryzyko.
Android KitKat - pozwolenie to nie będzie na nim działać. Dlaczego?
https://www.akshaydeo.com/why-battery_stats-permission-is-not-gonna-work-in-kitkat/
Wcześniej BATTERY_STATS miał poziom ochrony jako niebezpieczny, ale w KitKat zmieniono go na podpis/system, więc jeśli Twoja aplikacja nie działa jako aplikacja systemowa lub aplikacja nie jest podpisana tym samym certyfikatem co aplikacje systemowe, Twoja aplikacja nie będzie mogła uzyskać dostępu do statystyk baterii
OPIS:
Potencjalne niebezpieczeństwo: Zezwala aplikacji na zbieranie statystyk dotyczących baterii. Może modyfikować zebrane statystyki baterii.