Développement d'appareils personnalisés

Cette page explique plusieurs tâches que vous devrez peut-être effectuer si vous configurez une version 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 le $OUT_DIR . Et $ANDROID_PRODUCT_OUT pointe vers la cible la plus récente que vous avez créée. Cette page répertorie les tâches à exécuter par fastboot et peut être régénérée à l'aide m fastboot_info . Vous pouvez introduire une logique de clignotement personnalisée en modifiant le fichier fastboot-info.txt .

Le fichier fastboot-info.txt prend en charge ces commandes :

  • 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 nettoyage est spécifié.
  • erase %s : Efface une partition donnée (ne peut être utilisé qu'en conjonction avec if-wipe -> par exemple if-wipe erase cache ).

Déterminer l'état de verrouillage du flash

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

Valeur de retour Conditions
FLASH_LOCK_UNKNOWN Renvoyé uniquement par les appareils mis à niveau vers Android 7.x ou version ultérieure qui ne prenaient pas en charge auparavant les modifications du chargeur de démarrage requises pour obtenir l'état de verrouillage flash s'ils prenaient en charge la fonctionnalité de verrouillage/déverrouillage clignotant.
  • Les nouveaux appareils exécutant Android 7.x ou version ultérieure doivent être dans un état FLASH_LOCK_LOCKED ou FLASH_LOCK_UNLOCKED .
  • Les appareils mis à niveau vers Android 7.x ou version ultérieure qui ne prennent pas en charge la fonctionnalité de déverrouillage/verrouillage clignotant doivent renvoyer un état FLASH_LOCK_LOCKED .
FLASH_LOCK_LOCKED Renvoyé par tout appareil qui ne prend pas en charge le verrouillage/déverrouillage clignotant (c'est-à-dire que l'appareil est toujours verrouillé), ou par tout appareil qui prend en charge le verrouillage/déverrouillage clignotant et qui est dans l'état verrouillé.
FLASH_LOCK_UNLOCKED Renvoyé par tout appareil prenant en charge le verrouillage/déverrouillage clignotant et étant à l'état déverrouillé.

Les fabricants doivent tester les valeurs renvoyées par les appareils dotés de chargeurs de démarrage verrouillés et déverrouillés. 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