На этой странице описаны несколько задач, которые вам может потребоваться выполнить, если вы настраиваете сборку для собственного устройства.
Создайте пользовательскую конфигурацию флэш-памяти
Инструкции быстрой загрузки определены в артефакте под названием fastboot-info.txt
. Если вы создадите несколько целей, у вас будет несколько файлов fastboot-info.txt
в $OUT_DIR . И $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
передает состояние загрузчика, а системный 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