自訂裝置開發

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

建立自訂閃光燈設定

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)。

判斷閃光燈鎖定狀態

如果您要為裝置建構自訂的 flasot 守護程序 (flasotd),就必須能夠取得系統啟動載入程式和系統啟動載入程式鎖定狀態。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由任何支援閃爍鎖定/解鎖功能且處於解鎖狀態的裝置傳回。

製造商應測試裝置在系統啟動載入程式鎖定和解鎖的情況下傳回的值。舉例來說,Android 開放原始碼計畫包含參考實作項目,可根據 ro.boot.flash.locked 啟動屬性傳回值。程式碼範例位於以下目錄中:

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