Desarrollo de dispositivos personalizados

Esta página explica varias tareas que quizás debas realizar si estás configurando una compilación para tu propio dispositivo.

Crear una configuración flash personalizada

Las instrucciones Fastboot se definen en un artefacto llamado fastboot-info.txt . Si crea varios objetivos, tendrá varios archivos fastboot-info.txt en $OUT_DIR . Y $ANDROID_PRODUCT_OUT apunta al objetivo más actual que creó. Esta página enumera las tareas que debe ejecutar fastboot y se puede regenerar usando m fastboot_info . Puede introducir una lógica de actualización personalizada modificando el archivo fastboot-info.txt .

El archivo fastboot-info.txt admite estos comandos:

  • flash %s : parpadea una partición determinada. Los argumentos opcionales incluyen --slot-other, filename_path , and --apply-vbmeta`.
  • update-super : Actualiza la superpartición.
  • if-wipe : ejecuta condicionalmente algún otro componente si se especifica un borrado.
  • erase %s : borra una partición determinada (solo se puede usar junto con if-wipe -> por ejemplo, if-wipe erase cache ).

Determinar el estado de bloqueo del flash

Si está creando un demonio de arranque flash personalizado (flashbootd) para un dispositivo, debe poder obtener el cargador de arranque y el estado de bloqueo del mismo. getFlashLockState() @SystemApi transmite el estado del cargador de arranque y la API del sistema PersistentDataBlockManager.getFlashLockState() devuelve el estado de bloqueo del cargador de arranque en dispositivos compatibles.

Valor de retorno Condiciones
FLASH_LOCK_UNKNOWN Devuelto solo por dispositivos que se actualizaron a Android 7.x o superior y que previamente no admitían los cambios del gestor de arranque necesarios para obtener el estado de bloqueo de flash si admitían la capacidad de bloqueo/desbloqueo de flash.
  • Los dispositivos nuevos que ejecutan Android 7.x o superior deben estar en estado FLASH_LOCK_LOCKED o FLASH_LOCK_UNLOCKED .
  • Los dispositivos que se actualizan a Android 7.x o superior y que no admiten la capacidad de desbloqueo/bloqueo intermitente deben devolver un estado FLASH_LOCK_LOCKED .
FLASH_LOCK_LOCKED Devuelto por cualquier dispositivo que no admita bloqueo/desbloqueo intermitente (es decir, el dispositivo siempre está bloqueado), o cualquier dispositivo que admita bloqueo/desbloqueo intermitente y esté en estado bloqueado.
FLASH_LOCK_UNLOCKED Devuelto por cualquier dispositivo que admita bloqueo/desbloqueo intermitente y esté en estado desbloqueado.

Los fabricantes deben probar los valores devueltos por los dispositivos con cargadores de arranque bloqueados y desbloqueados. Por ejemplo, AOSP contiene una implementación de referencia que devuelve un valor basado en la propiedad de arranque 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