A partir del 27 de marzo de 2025, te recomendamos que uses android-latest-release
en lugar de aosp-main
para compilar y contribuir a AOSP. Para obtener más información, consulta Cambios en AOSP.
Desarrollo de dispositivos personalizado
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
En esta página, se explican las diferentes tareas que podrías tener que realizar si estás configurando una compilación para tu propio dispositivo.
Crea una configuración flash personalizada
Las instrucciones de fastboot se definen en un artefacto llamado fastboot-info.txt
. Si compilas varios destinos, tendrás varios archivos fastboot-info.txt
en $OUT_DIR. Y, $ANDROID_PRODUCT_OUT
apunta al destino más reciente que compilaste. En esta página, se enumeran las tareas para que fastboot ejecute y se puedan regenerar con m fastboot_info
. Puedes modificar el archivo fastboot-info.txt
para introducir lógica de escritura personalizada en la memoria flash.
El archivo fastboot-info.txt
admite estos comandos:
flash %s
: Escribe en la memoria flash de una partición determinada. Los argumentos opcionales incluyen --slot-other,
filename_path, and
--apply-vbmeta`.
update-super
: Actualiza la partición super.
if-wipe
: Ejecuta condicionalmente algún otro componente si se especifica una limpieza.
erase %s
: Borra una partición determinada (solo se puede usar junto con if-wipe
-> p. ej., if-wipe erase cache
).
Determina el estado de bloqueo de escritura en la memoria flash
Si vas a compilar un daemon de flashboot personalizado (flashbootd) para un dispositivo, necesitas poder obtener el bootloader y el estado de bloqueo del bootloader. getFlashLockState()
@SystemApi
transmite el estado del bootloader y la API del sistema PersistentDataBlockManager.getFlashLockState()
devuelve el estado de bloqueo del bootloader en dispositivos compatibles.
Valor que se devuelve |
Condiciones |
FLASH_LOCK_UNKNOWN |
Solo lo devuelven los dispositivos que se actualizaron a Android 7.x o versiones posteriores que no admitían
cambios de bootloader necesarios para obtener el estado de bloqueo de la escritura en la memoria
flash si admitían la función de bloqueo/desbloqueo de la escritura en la memoria flash.
- Los dispositivos nuevos con Android 7.x o versiones posteriores deben estar en estado
FLASH_LOCK_LOCKED o FLASH_LOCK_UNLOCKED .
- Los dispositivos que se actualicen a Android 7.x o una versión posterior que no admitan la
función de bloqueo/desbloqueo de escritura en la memoria flash deben devolver el estado
FLASH_LOCK_LOCKED .
|
FLASH_LOCK_LOCKED |
Lo devuelve cualquier dispositivo que no admite bloqueo/desbloqueo de escritura en la memoria flash (es decir, el dispositivo siempre está bloqueado), o cualquier dispositivo que admite bloqueo/desbloqueo de escritura en la memoria flash y está en estado bloqueado. |
FLASH_LOCK_UNLOCKED |
Lo devuelve cualquier dispositivo que admite bloqueo/desbloqueo de escritura en la memoria flash y está en estado desbloqueado. |
Los fabricantes deben someter a prueba los valores que muestran los dispositivos con bootloaders bloqueados y desbloqueados. Por ejemplo, el AOSP contiene una implementación de referencia que devuelve un valor basado en la propiedad de inicio ro.boot.flash.locked
. El código de ejemplo se encuentra en los siguientes directorios:
frameworks/base/services/core/java/com/android/server/PersistentDataBlockService.java
frameworks/base/core/java/android/service/persistentdata/PersistentDataBlockManager.java
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-04-04 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-04-04 (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`"]]