Entwicklung benutzerdefinierter Geräte

Auf dieser Seite werden verschiedene Aufgaben erläutert, die Sie ausführen müssen, wenn Sie einen Build für Ihr eigenes Gerät einrichten.

Benutzerdefinierte Flash-Konfiguration erstellen

Die Fastboot-Anleitungen sind in einem Artefakt namens fastboot-info.txt definiert. Wenn Sie mehrere Ziele erstellen, befinden sich im $OUT_DIR mehrere fastboot-info.txt-Dateien. $ANDROID_PRODUCT_OUT verweist auf das aktuellste Ziel, das Sie erstellt haben. Auf dieser Seite sind die Aufgaben aufgeführt, die von fastboot ausgeführt werden sollen. Sie kann mit m fastboot_info neu generiert werden. Sie können eine benutzerdefinierte Blinklogik einführen, indem Sie die Datei fastboot-info.txt ändern.

Die fastboot-info.txt-Datei unterstützt die folgenden Befehle:

  • flash %s: Eine bestimmte Partition wird geflasht. Optionale Argumente sind --slot-other,filename_path, and--apply-vbmeta.
  • update-super: Aktualisiert die Superpartition.
  • if-wipe: Eine andere Komponente wird bedingt ausgeführt, wenn ein Löschen angegeben wird.
  • erase %s: Löscht eine bestimmte Partition. Kann nur in Verbindung mit if-wipe verwendet werden, z. B. if-wipe erase cache).

Status der Blitzsperre ermitteln

Wenn Sie einen benutzerdefinierten Flashboot-Daemon (flashbootd) für ein Gerät erstellen, müssen Sie den Status des Bootloaders und des Bootloader-Sperrbildschirms abrufen können. Der getFlashLockState() @SystemApi überträgt den Bootloaderstatus und die PersistentDataBlockManager.getFlashLockState()-System-API gibt den Sperrstatus des Bootloaders auf konformen Geräten zurück.

Rückgabewert Krankheiten
FLASH_LOCK_UNKNOWN Wird nur von Geräten zurückgegeben, die auf Android 7.x oder höher umgestellt wurden und zuvor die Bootloader-Änderungen nicht unterstützt haben, die erforderlich sind, um den Status der Flash-Sperre abzurufen, wenn sie die Funktion zum Sperren/Entsperren des Flash-Speichers unterstützt haben.
  • Neue Geräte mit Android 7.x oder höher müssen sich entweder im Status FLASH_LOCK_LOCKED oder FLASH_LOCK_UNLOCKED befinden.
  • Geräte, die auf Android 7.x oder höher umgestellt werden und das Flashen, Entsperren und Sperren nicht unterstützen, sollten den Status FLASH_LOCK_LOCKED zurückgeben.
FLASH_LOCK_LOCKED Geräte, die nicht durch Blinken gesperrt/entriegelt werden können (d. h. das Gerät ist immer gesperrt) oder Geräte, die das Blinken zum Sperren/Entriegeln unterstützen und gesperrt sind.
FLASH_LOCK_UNLOCKED Wird von allen Geräten zurückgegeben, die das Blinken zur Sperr-/Entsperrung unterstützen und entsperrt sind.

Hersteller sollten die von Geräten mit gesperrtem und entsperrtem Bootloader zurückgegebenen Werte testen. AOSP enthält beispielsweise eine Referenzimplementierung, die einen Wert basierend auf der Boot-Property ro.boot.flash.locked zurückgibt. Der Beispielcode befindet sich in den folgenden Verzeichnissen:

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