Tworzenie niestandardowych urządzeń

Na tej stronie znajdziesz opis kilku zadań, które mogą być potrzebne podczas konfigurowania kompilacji na własnym urządzeniu.

Tworzenie niestandardowej konfiguracji lampy błyskowej

Instrukcje Fastboot są zdefiniowane w artefakcie o nazwie fastboot-info.txt. Jeśli utworzysz wiele elementów docelowych, w folderze $OUT_DIR znajdzie się kilka plików fastboot-info.txt. Symbol $ANDROID_PRODUCT_OUT wskazuje najnowszy utworzony przez Ciebie cel. Na tej stronie znajdziesz listę zadań, które ma wykonać fastboot. Możesz ją ponownie wygenerować za pomocą polecenia 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: Flashuje daną partycję. Opcjonalne argumenty to m.in. --slot-other,filename_path, and--apply-vbmeta`.
  • update-super: aktualizuje superpartycję.
  • if-wipe: warunkowo uruchamia inny komponent, jeśli określono wyczyszczenie.
  • erase %s: usuwa daną partycję (może być używana tylko w połączeniu z if-wipe – np. if-wipe erase cache).

Określanie stanu blokady lampy błyskowej

Jeśli tworzysz niestandardowy demon flashbootd dla urządzenia, musisz mieć możliwość uzyskania informacji o programie rozruchowym i jego stanie blokady. getFlashLockState() @SystemApi przesyła stan programu rozruchowego, a PersistentDataBlockManager.getFlashLockState() interfejs API systemu zwraca stan blokady programu rozruchowego na zgodnych urządzeniach.

Zwracana wartość Schorzenia
FLASH_LOCK_UNKNOWN Zwracany tylko przez urządzenia, które są aktualizowane do Androida 7.x lub nowszego i nie obsługiwały wcześniej zmian w programie rozruchowym wymaganych do uzyskania stanu blokady flash, jeśli obsługiwały możliwość blokowania/odblokowywania flashowania.
  • 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 odblokowywania/blokowania, powinny zwracać stan FLASH_LOCK_LOCKED.
FLASH_LOCK_LOCKED Zwracany przez każde urządzenie, które nie obsługuje blokowania/odblokowywania flashowania (czyli urządzenie jest zawsze zablokowane), lub każde urządzenie, które obsługuje blokowanie/odblokowywanie flashowania i jest w stanie zablokowanym.
FLASH_LOCK_UNLOCKED Zwracany przez każde urządzenie, które obsługuje blokowanie i odblokowywanie za pomocą migania i jest odblokowane.

Producenci powinni przetestować wartości zwracane przez urządzenia z zablokowanymi i odblokowanymi programami rozruchowymi. Na przykład AOSP zawiera implementację referencyjną, która zwraca wartość na podstawie właściwości rozruchu ro.boot.flash.locked. 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