自訂裝置開發

本頁說明為自有裝置設定建構版本時,可能需要執行的幾項工作。

建立自訂閃光燈設定

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