客製化設備開發

本頁介紹了在為自己的裝置設定建置時可能需要執行的多項任務。

建立自訂快閃記憶體配置

Fastboot 指令在名為fastboot-info.txt的工件中定義。如果您建立多個目標, $OUT_DIR中將有多個fastboot-info.txt檔案。並且, $ANDROID_PRODUCT_OUT指向您建置的最新目標。此頁面列出了 fastboot 要執行的任務,並且可以使用m fastboot_info重新產生。您可以透過修改fastboot-info.txt檔案來引入自訂刷機邏輯。

fastboot-info.txt檔案支援以下命令:

  • flash %s :刷新給定分割區。可選參數包括--slot-other, filename_path , and --apply-vbmeta`。
  • update-super :更新超級分割區。
  • if-wipe :如果指定了擦除,則有條件地運行其他一些元件。
  • erase %s :擦除給定分區(只能與if-wipe ->例如if-wipe erase cache快取結合使用)。

確定快閃記憶體鎖定狀態

如果您正在為裝置建立自訂 flashboot 守護程式 (flashbootd),則需要能夠取得引導程式和引導程式鎖定狀態。 getFlashLockState() @SystemApi傳輸引導程式狀態, PersistentDataBlockManager.getFlashLockState()系統 API 傳回相容裝置上引導程式的鎖定狀態。

傳回值狀況
FLASH_LOCK_UNKNOWN僅由升級至 Android 7.x 或更高版本且先前不支援取得快閃記憶體鎖定狀態所需的引導程式變更(如果它們支援快閃記憶體鎖定/解鎖功能)的裝置傳回。
  • 運行 Android 7.x 或更高版本的新裝置必須處於FLASH_LOCK_LOCKEDFLASH_LOCK_UNLOCKED狀態。
  • 升級至 Android 7.x 或更高版本且不支援快閃記憶體解鎖/鎖定功能的裝置應返回FLASH_LOCK_LOCKED狀態。
FLASH_LOCK_LOCKED由任何不支援閃爍鎖定/解鎖(即設備始終處於鎖定狀態)的設備,或任何支援閃爍鎖定/解鎖且處於鎖定狀態的設備返回。
FLASH_LOCK_UNLOCKED由任何支援閃爍鎖定/解鎖且處於解鎖狀態的裝置返回。

製造商應測試具有鎖定和解鎖引導程式的裝置傳回的值。例如,AOSP 包含一個參考實現,該實作會傳回基於ro.boot.flash.locked啟動屬性的值。範例程式碼位於以下目錄:

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