Entwicklung benutzerdefinierter Geräte

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

Benutzerdefinierte Blitzkonfiguration erstellen

Fastboot-Anweisungen sind in einem Artefakt namens fastboot-info.txt definiert. Wenn Sie mehrere Ziele erstellen, haben Sie mehrere fastboot-info.txt-Dateien im $OUT_DIR. $ANDROID_PRODUCT_OUT verweist auf das zuletzt erstellte Ziel. Auf dieser Seite werden die Aufgaben aufgeführt, die von Fastboot ausgeführt werden, und 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 Datei fastboot-info.txt unterstützt die folgenden Befehle:

  • flash %s: Flasht eine bestimmte Partition. Zu den optionalen Argumenten gehört --slot-other,filename_path, and--apply-vbmeta`.
  • update-super: Aktualisiert die Superpartition.
  • if-wipe: Führt eine andere Komponente bedingt aus, wenn ein Wipe angegeben ist.
  • erase %s: Löscht eine angegebene Partition (kann nur in Verbindung mit if-wipe verwendet werden, z. B. if-wipe erase cache).

Blitzsperrstatus ermitteln

Wenn Sie einen benutzerdefinierten Flashboot-Daemon (flashbootd) für ein Gerät erstellen, müssen Sie den Bootloader und den Sperrstatus des Bootloaders abrufen können. Die getFlashLockState() @SystemApi überträgt den Bootloader-Status und die PersistentDataBlockManager.getFlashLockState()-System-API gibt den Sperrstatus des Bootloaders auf kompatiblen 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 aktualisiert werden und die Bootloader-Änderungen, die zum Abrufen des Flash-Sperrstatus erforderlich sind, nicht unterstützt haben, wenn sie die Funktion zum Sperren/Entsperren des Flash-Speichers unterstützt haben.
  • Auf neuen Geräten mit Android 7.x oder höher muss entweder FLASH_LOCK_LOCKED oder FLASH_LOCK_UNLOCKED installiert sein.
  • Geräte, die auf Android 7.x oder höher aktualisiert werden und das Entsperren/Sperren per Flash nicht unterstützen, sollten den Status FLASH_LOCK_LOCKED zurückgeben.
FLASH_LOCK_LOCKED Wird von allen Geräten zurückgegeben, die das Flashen von Sperren/Entsperren nicht unterstützen (d. h. das Gerät ist immer gesperrt), oder von allen Geräten, die das Flashen von Sperren/Entsperren unterstützen und sich im gesperrten Zustand befinden.
FLASH_LOCK_UNLOCKED Wird von allen Geräten zurückgegeben, die das Blinken beim Sperren/Entsperren unterstützen und entsperrt sind.

Hersteller sollten die von Geräten mit gesperrten und entsperrten Bootloadern zurückgegebenen Werte testen. AOSP enthält beispielsweise eine Referenzimplementierung, die einen Wert basierend auf der Boot-Property ro.boot.flash.locked zurückgibt. 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