自訂裝置開發

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

建立自訂閃光燈設定

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