Tworzę aplikację do kontroli rodzicielskiej / rozliczalności dla Androida. Składa się z usługi monitorowania działającej w tle i uruchamianej po uruchomieniu telefonu.
Niestety, odkryłem, że kiedy Android jest uruchamiany w „Trybie awaryjnym”, usługi nie są uruchamiane automatycznie i dlatego moja aplikacja ma poważną wadę.
W trybie awaryjnym można uruchomić sieć i inne aplikacje bez mojej usługi monitorowania.
Pomyślałem, że jeśli nie można monitorować aktywności aplikacji w trybie awaryjnym, być może mógłbym przynajmniej wykryć, czy aplikacja była wcześniej w trybie awaryjnym. Może to może ostrzec rodzica lub partnera odpowiedzialnego?
Czy system Android przechowuje jakieś informacje na ten temat? A może jakikolwiek dziennik rozruchu? Jestem bardzo otwarty na sugestie i alternatywy.
Odpowiedzi:
Myślę, że złapałeś się, krótko mówiąc, nic nie możesz zrobić!
Spójrz na to źródło, które wyjaśnia dlaczego, szczególnie w tej sekcji:
Partycja systemu i tryb awaryjny
Słowa kluczowe są wolne od oprogramowania innych firm
Edytować:
Podczas uruchamiania systemu Android przechowuje pamięć podręczną
logcat
w tymczasowym buforze, który jest zarezerwowany w/dev/log
. Bufor ten jest poddawany recyklingowi, gdy osiągnie próg, oczywiście im większy próg, tym wolniej Android dostaje się z ciągłym spamowaniem do bufora logcat, a zatem utrzymywany na minimalnym poziomie - iirc, jego około 64 KB:Źródło:
system/core/logcat/logcat.cpp
Nie pytaj, ile może to być wierszy dla każdej aplikacji i dla każdej aplikacji. Nie tylko to, logcat znika po ponownym uruchomieniu!
źródło
/dev/null
po ponownym uruchomieniu komputera, jak „biznes jak zwykle” ... tylko mówię… :) I dziękuję za opinię!Nie jest to najlepsza odpowiedź, ale może informacje będą przydatne.
Jedyną znaną mi metodą zawiera dziennik wygenerowany przez system po ponownym uruchomieniu
/proc/last_kmsg
.To, czy jądro zachowa ten plik dziennika po ponownym uruchomieniu, zależy od ustawień podanych podczas kompilacji jądra.
Z mojego doświadczenia wynika, że niektóre urządzenia standardowe (HTC) mają włączoną funkcję rejestrowania, a inne nie. Nie widziałem spójnego wzoru.
źródło
adb shell cp /sys/fs/pstore/console-ramoops /data/media/0/console-ramoops.`date "+%Y_%m_%d_%H_%M_%S"`.log
współpracuje z TWRP na OP3 z systemem LineageOS opartym na systemie Android 8