Android Oreo pomoże naprawić bootloop urządzenia

3 minuty czytania
Komentarze

Bootloopy na Androidzie nigdy nie były rzeczą bardzo przyjemną dla użytkownika – kiedy telefon zawieszał się na animacji uruchamiania, był to znak, że coś bardzo złego dzieje się z systemem. Mógł to być efekt niedawnej aktualizacji, zmiany ROM-u lub nawet błędu producenta danego urządzenia, co idealnie przedstawia sytuacja z Nexusami sprzed dwóch lat. Nie było wiele możliwości rozwiązania tego problemu – albo odpowiadał za to system (wtedy wystarczyło zazwyczaj wyczyścić partycję /system i sflashować kolejny ROM) albo podzespoły urządzenia (a wtedy jedynym wyjściem była gwarancja producenta lub samodzielna naprawa urządzenia). Na szczęście najnowsza odsłona Androida, która otrzymała nazwę Oreo, pomoże nam rozwiązać ten problem – do systemu wprowadzona została funkcja o nazwie Rescue Party, która wykryje, gdy z naszym telefonem dzieje się coś złego i pomoże temu zaradzić.

Jak to działa?

Jak poinformowało nas Google, ósma odsłona Androida uruchamia funkcję Rescue Party w chwili, gdy wykryje, że ważne funkcje systemu zacięły się w pętli ponownego uruchamiania. Składa się ona z kilku coraz bardziej agresywnych poleceń, które czyszcząc wybrane miejsca w systemie, próbują przywrócić go do stanu używalności. Niestety nie wiemy jeszcze, co dokładnie wykonują kolejne komendy, ale piąta (czyli ostatnia z nich) wyłączą telefon, uruchamia tryb recovery i prosi użytkownika o przywrócenie urządzenia do ustawień fabrycznych.

Jak wygląda implementacja?

Funkcja Rescue Party jest domyślnie włączona na każdym urządzeniu, które działa pod kontrolą Androida Oreo. Plik .java, w którym mieści się cały kod tego rozwiązania, można znaleźć w następującej lokalizacji:

/services/core/java/com/android/server/RescueParty.java

Jak wynika z udostępnionej dokumentacji, Rescue Party otrzymuje wszystkie informacje na temat uruchamiania się systemu i aplikacji oraz niekontrolowanego zatrzymania działania tych elementów oprogramowania i przystępuje do działa w chwili, gdy proces system_server zatrzyma się przynajmniej pięć razy w ciągu pięciu minut lub ważna aplikacja systemowa przestanie działać przynajmniej pięć razy w ciągu trzydziestu sekund. Jeśli jedna z podanych przeze mnie wcześniej sytuacji zostanie wykryta, to uruchamiany jest pierwszy etap naprawiania Androida i jeśli nie widać efektów, to funkcja Rescue Party automatcznie przechodzi do kolejnego, aż dotrze do piątego.

Czy rozwiązanie to znajdzie się w każdym telefonie?

Prawdopodobnie tak, ponieważ do działania Rescue Party nie jest wymagana żadna zmiana w sprzęcie. Wszystkie operacje wykonuje sam Android, jednak jest kilka zastrzeżeń, ponieważ system musi:

  • wspierać funkcję –prompt_and_wipe_data, która pozwala na wyczyszczenie danych na urządzeniu,
  • poinformować użytkownika, że destrukcja danych jest nieodwracalna,
  • oferować możliwość anulowania piątego kroku Rescue Party.

Dodatkowo producenci urządzeń są proszeni przez Google o niedodawanie kolejnych kroków tej funkcji, ponieważ według dokumentacji od wykonania pierwszego do piątego może minąć nawet trzydzieści minut.

Co z debugowaniem?

Co ciekawe, funkcja Rescue Party nie będzie działać w przypadku, gdy urządzenie będzie podłączone do komputera, ponieważ prawdopodobieństwo na to, że deweloper debuguje właśnie jakiś program albo funkcję systemu jest bardzo duże. Jest to świetna wiadomość dla twórców aplikacji, ponieważ debuger to genialne narzędzie, które bardzo ułatwia pracę – dzięki niemu poznać możemy linię kodu, w której leży błąd, i szybko naprawić usterkę. Oczywiście będzie można ręcznie wymusić włączenie się Rescue Party – w tym celu należy skorzystać z komend:

adb shell setprop persist.sys.enable_rescue 1

Po wpisaniu powyższej komendy można zadecydować, czy chcemy naprawiać proces system_server…

adb shell setprop debug.crash_system 1

…czy może jakąś aplikację systemową:

adb shell setprop debug.crash_sysui 1

Wszystkie logi zbierane przez urządzenie zapisywane są w lokalizacji /data/system/uiderrors.txt.

Źródło: Dokumentacja Androida

Motyw