Entwicklung kundenspezifischer Geräte

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

Erstellen Sie eine benutzerdefinierte Flash-Konfiguration

Fastboot-Anweisungen werden in einem Artefakt namens fastboot-info.txt definiert. Wenn Sie mehrere Ziele erstellen, befinden sich im $OUT_DIR mehrere fastboot-info.txt Dateien. Und $ANDROID_PRODUCT_OUT verweist auf das aktuellste Ziel, das Sie erstellt haben. Diese Seite listet die Aufgaben auf, die Fastboot ausführen soll, und kann mit m fastboot_info neu generiert werden. Sie können eine benutzerdefinierte Flash-Logik einführen, indem Sie die Datei fastboot-info.txt ändern.

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

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

Bestimmen Sie den Status der Blitzsperre

Wenn Sie einen benutzerdefinierten Flashboot-Daemon (flashbootd) für ein Gerät erstellen, müssen Sie in der Lage sein, den Bootloader- und Bootloader-Sperrstatus abzurufen. Die getFlashLockState() @SystemApi überträgt den Bootloader-Status und die System-API PersistentDataBlockManager.getFlashLockState() gibt den Sperrstatus des Bootloaders auf kompatiblen Geräten zurück.

Rückgabewert Bedingungen
FLASH_LOCK_UNKNOWN Wird nur von Geräten zurückgegeben, die ein Upgrade auf Android 7.x oder höher durchführen und zuvor die zum Erhalten des Flash-Sperrstatus erforderlichen Bootloader-Änderungen nicht unterstützt haben, wenn sie die Flash-Sperr-/Entsperrfunktion unterstützten.
  • 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 aktualisiert werden und die Flash-Entsperr-/Sperrfunktion nicht unterstützen, sollten den Status FLASH_LOCK_LOCKED zurückgeben.
FLASH_LOCK_LOCKED Wird von jedem Gerät zurückgegeben, das blinkendes Sperren/Entsperren nicht unterstützt (d. h. das Gerät ist immer gesperrt), oder von jedem Gerät, das blinkendes Sperren/Entsperren unterstützt und sich im gesperrten Zustand befindet.
FLASH_LOCK_UNLOCKED Wird von jedem Gerät zurückgegeben, das blinkendes Sperren/Entsperren unterstützt und sich im entsperrten Zustand befindet.

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