Core-Kernel-Anforderungen

Android 8.0 und höher erfordern eine minimale Kernelversion und Kernelkonfiguration, die durch die Vendor Test Suite (VTS) und Over-the-Air (OTA)-Updates überprüft werden. Android - Gerät - Kernel muss Kernel ermöglichen .config Unterstützung und die Möglichkeit , die Kernel - Konfiguration zur Laufzeit durch das lesen procfs Dateisystem.

Kernel-.config-Unterstützung

Alle Geräte Kerne müssen die Gesamtheit ermöglichen android-base.cfg , das die folgenden Kernel-Konfigurationsoptionen enthalten muss (oder deren Kernel-Version Äquivalent):

CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y

Kernelversion

Für Android 9 sind die Mindestanforderungen an die Kernelversionen Long Term Support (LTS) 4.4.107, 4.9.84 und 4.14.42.

  • Alle 2018 produzierten SoCs müssen mit Kernel 4.9.84 oder höher starten.
  • Alle anderen SoCs, die Android-Geräte mit Android 9 starten, müssen Kernel 4.4.107 oder höher verwenden.
  • Geräte-Kernel, die auf 4.14 basieren, müssen die LTS-Version 4.14.42 oder höher enthalten.
  • Unabhängig vom Startdatum unterliegen alle SoCs mit Gerätestarts auf Android 8.0 und höher weiterhin den Kernel-Änderungen, die zur Aktivierung von Treble erforderlich sind.
  • Ältere Android-Geräte, die auf Android 8.0 oder höher aktualisiert werden, können weiterhin ihre ursprüngliche Basis-Kernel-Version verwenden.

Einzelheiten zu dem LTS - Kernel findet Langzeit Stable - Kernel und Android gemeinsamen Kern

Gerätebaum-Unterstützung

Wenn die Plattform nicht unterstützt Advanced Configuration and Power Interface (ACPI) Spezifikation muss devicetree Unterstützung im Kernel aktiviert sein und die Bootloader muss die Hardwarebeschreibung in Form eines devicetree an den Kernel übergeben. Der Gerätebaum muss auch für Android zum Lesen verfügbar sein und in der Lage sein, hersteller- und ODM-spezifische Parameter an Android zu übergeben. CONFIG_OF ist obligatorisch, zusammen mit allen anderen geräte- und Subsystem-spezifischen CONFIG_OF_* Kernel - Konfigurationsoptionen.

DebugFS verwenden

Die Umsetzung der Anbieter - Schnittstelle kann auf dem nicht verlassen DebugFS Dateisystem Zugriff Debug - Informationen. Das ist , weil in Android 7,0-10, DebugFS kann aktiviert werden, aber VTS - Tests könnten mit getan werden DebugFS hängt.

In Android 11, DebugFS kann nicht auf die Produktion Geräte zugegriffen oder montiert werden, so dass Gerätehersteller es entfernen müssen. Bevor Android 11, dumpstate zugegriffen Bindemittel Statistiken aus DebugFS . Da Benutzer - Builds mit Android 11 oder höher nicht zugreifen kann Abschuss DebugFS , dumpstate Zugriffe Bindemittel Statistiken aus binderfs . So aktivieren Sie Binderfs , aktivieren Sie die Kernel - Konfiguration CONFIG_ANDROID_BINDERFS .

In Android 11 erzwingt VTS diese beiden Anforderungen:

  • CONFIG_DEBUG_FS wird nicht in dem Gerät der Kernel - Konfiguration aktiviert.
  • DebugFS nicht unter aufgeführt /proc/filesystems .

DebugFS in Android 12

Geräte, die mit Android 12 starten und Kernel-Versionen höher als v5.4 verwenden, müssen mit dem GKI-Kernel ausgeliefert werden. So , dass die Partner zugreifen können DebugFS in Userdebug baut , während sie auf der GKI Kernel entwickeln, die Kernel - Konfiguration CONFIG_DEBUG_FS befindet sich in der GKI defconfig aktiviert. Nie montieren DebugFS in Benutzer für Geräte baut sowohl auf Android startet 11 und Android 12.

Userdebug-Builds haben eine bessere Testabdeckung als User-Builds und werden während des gesamten Entwicklungszyklus intensiv getestet. Der folgende Plan minimiert den Unterschied zwischen den beiden Build - Typen in Bezug auf DebugFS Zugang und bietet folgende Vorteile:

  • Verhindert , dass Userdebug baut versehentlich je nach DebugFS für neue Funktionen
  • Stellt sicher, dass alle vorhandenen Funktionen, die durch das Fehlen von DebugFS beschädigt werden, frühzeitig im Entwicklungszyklus bekannt sind

Debugfs greift in Userdebug Builds werden wie folgt unterteilt :

  1. DebugFS Datei Initialisierungen während der Geräte Boot, wie ein Schreibzugriff auf eine Datei in DebugFS auf Debug - Datenerfassung zu aktivieren.
  2. Bugreport Generation: Die dumpstate HAL liest DebugFS - Dateien , wenn DumpstateBoard() von aufgerufen wird dumpstate . Diese Informationen werden Teil des Fehlerberichts.
  3. Gerätespezifische Prüfung und Validierung.

Die folgende Tabelle beschreibt , wie jeder dieser drei Kategorien in Android unterstützt wird 11 und Android 12. Beachten Sie, dass die folgenden nur auf Userdebug gilt baut seit DebugFS kann nicht montiert werden , in Benutzer aufbaut.

Anwendungsfall Android 11-Benutzerdebug-Build Android 12-Benutzerdebug-Build
Einmalige DebugFS Dateien Initialisierung während des Startvorgangs. Dieser Zugriff erfolgt nur einmal beim Booten. Die Vendor-Init macht dies. Dumpstate HAL führt dies während der HAL-Initialisierung durch. Um die gleiche init Halterungen zu ermöglichen DebugFS in Userdebug vor dem HAL initialisiert baut. Init Anrufe umount() auf DebugFS , wenn das Gerät das Booten abgeschlossen hat.
Bugreport Generation: Die dumpstate HAL liest DebugFS Dateien, die einen Teil des Fehlerberichts werden. Erfolgt durch dumpstate HAL innerhalb DumpstateBoard() , wenn sie durch das Werkzeug dumpstate aufgerufen. Erfolgt durch dumpstate HAL innerhalb DumpstateBoard() , wenn sie von dumpstate aufgerufen ( DumpstateDevice.cpp ). Das dumpstate Werkzeug (Teil des Rahmens Android) sorgt DebugFS Halterungen während des Aufrufs.
Gerätespezifische Prüfung und Validierung Adb-Root und -Shell Adb-Root und -Shell. Mount DebugFS vom adb Schale mit Rootzugriff 1.

1 Zur Montage DebugFS von adb shell mit Rootzugriff verwenden diesen Befehl:

adb shell mount -t debugfs debugfs /sys/kernel/debug .

Erforderliche Partneraktionen

Partner müssen basierend auf diesen Änderungen auf Android 12-Geräten Folgendes umsetzen:

  • Machen Sie alle Bootzeit Initialisierungen von DebugFS Knoten während der dumpstate HAL Initialisierung geschehen. Ein Beispiel dafür , wie dies zu tun, siehe DNM: Beispiel für Bootzeit Initialisierung von DebugFS Dateien .
  • Nicht in DebugFS Zugriff während der Laufzeit. Es gelten folgende Ausnahmen:
    • Bugreport-Generierung (kommt aus dem Dumpstate HAL)
    • Prüfung und Validierung (zugänglich durch adb root und shell - stellen sicher , dass debugfs montiert zuerst)

Entwickler können die Debug - persistente Eigenschaft persist.dbg.keep_debugfs_mounted zu halten DebugFs über Neustarts montiert auf Userdebug und eng aufbaut.

GTS Compliance - Tests stellen sicher , dass die DebugFS Dateisystem nicht montiert in Benutzer aufbaut. Sepolicy neverallow Aussagen sicherzustellen , dass bei Geräten startet auf Android 12 oder höher, werden nicht autorisierte Prozesse keinen Zugriff auf bereitgestellt DebugFs .