Tworzenie niestandardowych urządzeń

Na tej stronie znajdziesz opisy kilku zadań, które możesz musieć wykonać, jeśli konfigurujesz wersję na własne urządzenie.

Tworzenie niestandardowej konfiguracji flash

Instrukcje dotyczące szybkiego uruchamiania są zdefiniowane w artefakcie o nazwie fastboot-info.txt. Jeśli tworzysz wiele obiektów docelowych, w folderze $OUT_DIR znajdziesz wiele plików fastboot-info.txt. $ANDROID_PRODUCT_OUT wskazuje najnowszy utworzony przez Ciebie cel. Ta strona zawiera listę zadań do wykonania przez fastboot i może zostać wygenerowana ponownie za pomocą m fastboot_info. Możesz wprowadzić niestandardową logikę migania, modyfikując plik fastboot-info.txt.

Plik fastboot-info.txt obsługuje te polecenia:

  • flash %s: flashowanie określonego partycjonowania. Opcjonalne argumenty to: --slot-other,filename_path, and--apply-vbmeta`.
  • update-super: aktualizuje super partycję.
  • if-wipe: warunkowo uruchamia inny komponent, jeśli jest określony wipe.
  • erase %s: kasuje dany podział (może być używany tylko w połączeniu z if-wipe -> np. if-wipe erase cache).

Określanie stanu blokady lampy błyskowej

Jeśli tworzysz niestandardowy demon flashboot (flashbootd) na potrzeby urządzenia, musisz mieć możliwość uzyskania stanu programu rozruchowego i stanu blokady programu rozruchowego. getFlashLockState() @SystemApi przesyła stan programu rozruchowego, a PersistentDataBlockManager.getFlashLockState() system API zwraca stan blokady programu rozruchowego na zgodnych urządzeniach.

Zwracana wartość Schorzenia
FLASH_LOCK_UNKNOWN Zwracane tylko przez urządzenia, które są aktualizowane do Androida 7.x lub nowszego i nie obsługują zmian bootloadera wymaganych do zablokowania flasha, jeśli obsługują funkcję blokowania/odblokowywania flasha.
  • Nowe urządzenia z Androidem 7.x lub nowszym muszą być w stanie FLASH_LOCK_LOCKED lub FLASH_LOCK_UNLOCKED.
  • Urządzenia, które są aktualizowane do Androida 7.x lub nowszego i nie obsługują funkcji flash unlock/lock, powinny zwracać stan FLASH_LOCK_LOCKED.
FLASH_LOCK_LOCKED Zwracane przez dowolne urządzenie, które nie obsługuje migania blokady/odblokowania (czyli urządzenie jest zawsze zablokowane), lub dowolne urządzenie, które obsługuje miganie blokady/odblokowania i jest w stanie zablokowanym.
FLASH_LOCK_UNLOCKED Zwracane przez każde urządzenie, które obsługuje miganie podczas blokowania i odblokowywania i jest w stanie odblokowanym.

Producenci powinni przetestować wartości zwracane przez urządzenia z zablokowanym i odblokowanym bootloaderem. Na przykład AOSP zawiera implementację referencyjną, która zwraca wartość na podstawie właściwości ro.boot.flash.locked boot. Przykładowy kod znajduje się w tych katalogach:

  • frameworks/base/services/core/java/com/android/server/PersistentDataBlockService.java
  • frameworks/base/core/java/android/service/persistentdata/PersistentDataBlockManager.java