Rozwój urządzeń niestandardowych

Na tej stronie opisano kilka zadań, które mogą być konieczne do wykonania, jeśli konfigurujesz kompilację dla własnego urządzenia.

Utwórz niestandardową konfigurację pamięci flash

Instrukcje Fastboot są zdefiniowane w artefakcie o nazwie fastboot-info.txt . Jeśli zbudujesz wiele obiektów docelowych, będziesz mieć wiele plików fastboot-info.txt w katalogu $OUT_DIR . A $ANDROID_PRODUCT_OUT wskazuje na najnowszy zbudowany cel. Ta strona zawiera listę zadań do wykonania przez fastboot i można je zregenerować za pomocą m fastboot_info . Możesz wprowadzić niestandardową logikę flashowania, modyfikując plik fastboot-info.txt .

Plik fastboot-info.txt obsługuje następujące polecenia:

  • flash %s : Miga daną partycję. Opcjonalne argumenty to --slot-other, filename_path , and --apply-vbmeta`.
  • update-super : Aktualizuje super partycję.
  • if-wipe : Warunkowo uruchamia inny komponent, jeśli określono czyszczenie.
  • erase %s : Kasuje daną partycję (można użyć tylko w połączeniu z if-wipe -> np. if-wipe erase cache ).

Określ stan blokady lampy błyskowej

Jeśli tworzysz niestandardowego demona flashboot (flashbootd) dla urządzenia, musisz mieć możliwość uzyskania stanu blokady bootloadera i bootloadera. Funkcja getFlashLockState() @SystemApi przesyła stan programu ładującego, a systemowe API PersistentDataBlockManager.getFlashLockState() zwraca stan blokady programu ładującego na zgodnych urządzeniach.

Wartość zwracana Warunki
FLASH_LOCK_UNKNOWN Zwracane tylko w przypadku urządzeń zaktualizowanych do wersji Android 7.x lub nowszej, które wcześniej nie obsługiwały zmian w programie ładującym wymaganych do uzyskania stanu blokady pamięci flash, jeśli obsługiwały funkcję blokowania/odblokowywania pamięci flash.
  • Nowe urządzenia z systemem Android 7.x lub nowszym muszą mieć stan FLASH_LOCK_LOCKED lub FLASH_LOCK_UNLOCKED .
  • Urządzenia zaktualizowane do wersji Android 7.x lub nowszej, które nie obsługują funkcji odblokowania/blokowania poprzez flashowanie, powinny zwrócić stan FLASH_LOCK_LOCKED .
FLASH_LOCK_LOCKED Zwracany przez dowolne urządzenie, które nie obsługuje migającego blokowania/odblokowywania (tzn. urządzenie jest zawsze zablokowane) lub dowolne urządzenie, które obsługuje migające blokowanie/odblokowywanie i jest w stanie zablokowanym.
FLASH_LOCK_UNLOCKED Zwrócone przez dowolne urządzenie obsługujące flashowanie blokady/odblokowania i będące w stanie odblokowanym.

Producenci powinni przetestować wartości zwracane przez urządzenia z zablokowanymi i odblokowanymi programami ładującymi. Na przykład AOSP zawiera implementację referencyjną, która zwraca wartość opartą na właściwości rozruchowej ro.boot.flash.locked . Przykładowy kod znajduje się w następujących katalogach:

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