На этой странице объясняется несколько задач, которые вам, возможно, придется выполнить, если вы настраиваете сборку для своего собственного устройства.
Создайте пользовательскую конфигурацию вспышки
Инструкции для быстрой загрузки определены в артефакте fastboot-info.txt
. При сборке нескольких целевых устройств в каталоге $OUT_DIR будет несколько файлов fastboot-info.txt
. При этом $ANDROID_PRODUCT_OUT
указывает на последнюю собранную вами целевую систему. На этой странице перечислены задачи, которые должна выполнить быстрая загрузка, и её можно сгенерировать заново с помощью 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
).
Определить состояние блокировки вспышки
Если вы создаёте собственный демон флеш-загрузки (flashbootd) для устройства, вам необходимо получить информацию о загрузчике и его блокировке. Метод getFlashLockState()
@SystemApi
передаёт состояние загрузчика, а системный API PersistentDataBlockManager.getFlashLockState()
возвращает состояние блокировки загрузчика на совместимых устройствах.
Возвращаемое значение | Условия |
---|---|
FLASH_LOCK_UNKNOWN | Возвращается только устройствами, обновляемыми до Android 7.x или выше, которые ранее не поддерживали изменения загрузчика, необходимые для получения статуса блокировки прошивки, если они поддерживали возможность блокировки/разблокировки прошивки.
|
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