Urządzenia z Androidem 12 z jądrem systemu
muszą być przesłane z jądrem GKI w wersjach wyższych niż 5.4. Dzięki temu
partnerzy mogą korzystać z DebugFS
w kompilacjach debugowania użytkowników podczas tworzenia interfejsu GKI.
jądro, konfiguracja jądra CONFIG_DEBUG_FS
jest włączona w konfiguracji GKI defconfig.
Nigdy nie podłączaj DebugFS
w kompilacjach użytkowników na urządzeniach
na Androidzie 12.
Kompilacje Userdebug mają lepszy zasięg testów niż kompilacje użytkowników i często uzyskują
i testować je w całym cyklu programowania. Poniższy plan minimalizuje
różnica między 2 typami kompilacji w odniesieniu do dostępu do DebugFS
oraz
zapewnia następujące korzyści:
- Zapobiega przypadkowemu tworzeniu błędów debugowania użytkownika w zależności od klucza
DebugFS
pod kątem nowych funkcji - Zapewnia, że wszystkie dotychczasowe funkcje, które nie działają z powodu braku DebugFS, jest znany na początku cyklu rozwojowego,
Dostępy Debugfs w kompilacjach userdebug są klasyfikowane jako następujące:
- Plik
DebugFS
został zainicjowany podczas rozruchu urządzenia, np. uprawnienia do zapisu pliku w usłudzeDebugFS
w celu włączenia zbierania danych debugowania. - Generowanie raportu o błędzie: HAL stanu zrzutu odczytuje pliki
DebugFS
, gdy PoleDumpstateBoard()
jest wywoływane przez funkcjędumpstate
. Ten te informacje stają się częścią raportu o błędzie. - Testowanie i weryfikacja pod kątem konkretnych urządzeń.
W tabeli poniżej opisujemy, jak każda z tych kategorii jest
która działa na Androidzie 12. Pamiętaj, że parametr
poniższe zastosowanie ma zastosowanie tylko do kompilacji debugowania użytkownika, ponieważ funkcji DebugFS
nie można
w kompilacjach użytkowników.
Przypadek użycia | Kompilacja debugowania użytkownika na Androidzie 12 |
---|---|
Jednorazowe zainicjowanie plików DebugFS podczas uruchamiania.
Dostęp ten jest możliwy tylko raz podczas uruchamiania.
|
HAL Dumpstate wykonuje tę czynność podczas inicjowania HAL. Aby je włączyć,
init podłącza interfejs DebugFS w kompilacjach userdebug przed zainicjowaniem listy HAL.
Init zadzwoni pod numer umount() w: DebugFS , gdy
zakończyło się uruchomienie urządzenia.
|
Generowanie raportów o błędach: lista HAL odczytuje dane z raportu o błędzie.
DebugFS plików, które stały się częścią raportu o błędzie.
|
Wykonane przez listę HAL stanu zrzutu w ciągu DumpstateBoard() w przypadku wywołania przez stan dumpstate
(DumpstateDevice.cpp).
Narzędzie dumpstate (część platformy Androida) gwarantuje, że DebugFS
punkty montowania w trakcie wywoływania.
|
Testowanie i weryfikacja pod kątem konkretnych urządzeń | Główny element systemu Adb i powłoka. Zamontuj DebugFS z powłoki adb za pomocą polecenia
dostęp do roota1.
|
1Aby podłączyć urządzenie DebugFS
z poziomu adb shell
za pomocą
dostęp do roota, wpisz to polecenie:
adb shell mount -t debugfs debugfs /sys/kernel/debug
.
Wymagane działania partnera
W oparciu o te zmiany partnerzy muszą wprowadzić następujące Urządzenia z Androidem 12:
- Zadbaj o to, aby podczas rozruchu były wykonywane wszystkie inicjacje
DebugFS
węzła podczas inicjowania kodu HAL ze stanem zrzutu. Aby dowiedzieć się, jak to zrobić, zobacz DNM: Przykład inicjowania plikówDebugFS
podczas rozruchu - Nie zezwalaj na dostęp aplikacji
DebugFS
podczas działania. Wyjątki zastosuj:- Generowanie raportu o błędzie (pochodzi z pliku HAL Dumpstate)
- Testowanie i weryfikacja (dostępne dla użytkowników
adb root
ishell
– upewnij się, że najpierw podłączysz DebugFS).
Deweloperzy mogą ustawić właściwość trwałą debugowania
persist.dbg.keep_debugfs_mounted
, aby zachować połączenie z DebugFs
restartów podczas debugowania użytkownika i kompilacji eng.
Testy zgodności GTS pozwalają sprawdzić, czy system plików DebugFS
nie jest
w kompilacjach użytkowników. Instrukcje Sepolicy neverallow
zapewniają, że w urządzeniach
uruchamianych na Androidzie 12 lub nowszym, nieautoryzowane procesy nie są uwzględniane
dostęp do usługi DebugFs
.