Начиная с 27 марта 2025 г. мы рекомендуем использовать android-latest-release
вместо aosp-main
для создания и участия в AOSP. Дополнительные сведения см. в разделе Изменения в AOSP .
Разработка индивидуальных устройств
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
На этой странице описывается несколько задач, которые вам может потребоваться выполнить при настройке сборки для своего устройства.
Создайте пользовательскую конфигурацию вспышки
Инструкции 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
: Условно запускает какой-либо другой компонент, если указана очистка. -
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
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 UTC."],[],[],null,["# Custom device development\n\nThis page explains several tasks you might need to perform if you're\nsetting up a build for your own device.\n\nCreate a custom flash configuration\n-----------------------------------\n\nFastboot instructions are defined in an artifact called `fastboot-info.txt`. If\nyou build multiple targets, you'll have multiple `fastboot-info.txt` files in\nthe \u003cvar translate=\"no\"\u003e$OUT_DIR\u003c/var\u003e. And, `$ANDROID_PRODUCT_OUT` points to the\nmost current target you built. This page list the tasks for fastboot to execute\nand can be regenerated using `m fastboot_info`. You can introduce custom\nflashing logic by modifying the `fastboot-info.txt` file.\n\nThe `fastboot-info.txt` file supports these commands:\n\n- `flash %s`: Flashes a given partition. Optional arguments include `--slot-other,`\u003cvar translate=\"no\"\u003efilename_path\u003c/var\u003e`, and`--apply-vbmeta\\`.\n- `update-super`: Updates the super partition.\n- `if-wipe`: Conditionally runs some other component if a wipe is specified.\n- `erase %s`: Erases a given partition (can only be used in conjunction with `if-wipe` -\\\u003e eg. `if-wipe erase cache`).\n\nDetermine flash lock state\n--------------------------\n\nIf you're building a custom flashboot daemon (flashbootd) for a device, you need\nto be able to obtain bootloader and bootloader lock state. The\n`getFlashLockState()` `@SystemApi` transmits the bootloader\nstate and the `PersistentDataBlockManager.getFlashLockState()` system\nAPI returns the bootloader's lock status on compliant devices.\n\n| Return value | Conditions |\n|-----------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `FLASH_LOCK_UNKNOWN` | Returned only by devices upgrading to Android 7.x or higher that didn't previously support the bootloader changes required to get the flash lock status if they supported flashing lock/unlock capability. - New devices running Android 7.x or higher must be in either a `FLASH_LOCK_LOCKED` or `FLASH_LOCK_UNLOCKED` state. - Devices upgrading to Android 7.x or higher that don't support flashing unlock/lock capability should return a `FLASH_LOCK_LOCKED` state. |\n| `FLASH_LOCK_LOCKED` | Returned by any device that doesn't support flashing lock/unlock (that is, the device is always locked), or any device that supports flashing lock/unlock and is in the locked state. |\n| `FLASH_LOCK_UNLOCKED` | Returned by any device that supports flashing lock/unlock and is in the unlocked state. |\n\nManufacturers should test the values returned by devices with locked and\nunlocked bootloaders. For example, AOSP\ncontains a reference implementation that returns a value based on the\n`ro.boot.flash.locked` boot property. Example code is located in the\nfollowing directories:\n\n- `frameworks/base/services/core/java/com/android/server/PersistentDataBlockService.java`\n- `frameworks/base/core/java/android/service/persistentdata/PersistentDataBlockManager.java`"]]