Разработка индивидуальных устройств

На этой странице описаны несколько задач, которые вам может потребоваться выполнить, если вы настраиваете сборку для собственного устройства.

Создайте пользовательскую конфигурацию флэш-памяти

Инструкции быстрой загрузки определены в артефакте под названием 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 или выше, которые ранее не поддерживали изменения загрузчика, необходимые для получения статуса блокировки флэш-памяти, если они поддерживают возможность мигающей блокировки/разблокировки.
  • Новые устройства под управлением Android 7.x или более поздней версии должны находиться в состоянии FLASH_LOCK_LOCKED или FLASH_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