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