Développement d'appareils personnalisés

Cette page explique plusieurs tâches que vous devrez peut-être effectuer si vous configurez un build pour votre propre appareil.

Créer une configuration Flash personnalisée

Les instructions Fastboot sont définies dans un artefact appelé fastboot-info.txt. Si vous créez plusieurs cibles, vous aurez plusieurs fichiers fastboot-info.txt dans $OUT_DIR. $ANDROID_PRODUCT_OUT pointe vers la cible la plus récente que vous avez créée. Cette page liste les tâches que fastboot doit exécuter et peut être régénérée à l'aide de m fastboot_info. Vous pouvez introduire une logique de clignotement personnalisée en modifiant le fichier fastboot-info.txt.

Le fichier fastboot-info.txt est compatible avec les commandes suivantes :

  • flash %s : flashe une partition donnée. Les arguments facultatifs incluent --slot-other,filename_path, and--apply-vbmeta.
  • update-super : met à jour la super-partition.
  • if-wipe : exécute conditionnellement un autre composant si un effacement est spécifié.
  • erase %s : efface une partition donnée (ne peut être utilisé qu'avec if-wipe, par exemple if-wipe erase cache).

Déterminer l'état du verrouillage du flash

Si vous créez un démon flashboot personnalisé (flashbootd) pour un appareil, vous devez pouvoir obtenir l'état du bootloader et de son verrouillage. Le @SystemApi getFlashLockState() transmet l'état du bootloader, et l'API système PersistentDataBlockManager.getFlashLockState() renvoie l'état de verrouillage du bootloader sur les appareils compatibles.

Valeur renvoyée Problèmes de santé
FLASH_LOCK_UNKNOWN Cette valeur n'est renvoyée que par les appareils qui passent à Android 7.x ou version ultérieure et qui ne prenaient pas en charge auparavant les modifications du bootloader nécessaires pour obtenir l'état du verrouillage du flash s'ils prenaient en charge la fonctionnalité de verrouillage/déverrouillage du flash.
  • Les nouveaux appareils équipés d'Android 7.x ou version ultérieure doivent être dans l'état FLASH_LOCK_LOCKED ou FLASH_LOCK_UNLOCKED.
  • Les appareils qui passent à Android 7.x ou version ultérieure et qui ne sont pas compatibles avec la fonctionnalité de déverrouillage/verrouillage par flashage doivent renvoyer un état FLASH_LOCK_LOCKED.
FLASH_LOCK_LOCKED Retourné par tout appareil qui ne prend pas en charge le verrouillage/déverrouillage du flash (c'est-à-dire que l'appareil est toujours verrouillé) ou par tout appareil qui prend en charge le verrouillage/déverrouillage du flash et qui est à l'état verrouillé.
FLASH_LOCK_UNLOCKED Retourné par tout appareil compatible avec le déverrouillage/verrouillage par flash et dont l'état est "déverrouillé".

Les fabricants doivent tester les valeurs renvoyées par les appareils avec bootloader verrouillé et déverrouillé. Par exemple, AOSP contient une implémentation de référence qui renvoie une valeur basée sur la propriété de démarrage ro.boot.flash.locked. L'exemple de code se trouve dans les répertoires suivants :

  • frameworks/base/services/core/java/com/android/server/PersistentDataBlockService.java
  • frameworks/base/core/java/android/service/persistentdata/PersistentDataBlockManager.java