Auf dieser Seite wird beschrieben, wie Sie ABI-Darstellungen für Android-Kernel erstellen und ausführen ABI-Überwachung. Sie ist unter Android 14 und höher liegen. Informationen zu niedrigeren Versionen finden Sie unter Ältere Kernel-Versionen.
Weitere Informationen finden Sie in der Referenzdokumentation zu Kleaf: Unterstützung der ABI-Überwachung (Google KI) und Unterstützung der ABI-Überwachung (Gerät).
Kernel und seine ABI-Darstellung erstellen
Nach dem Herunterladen von GKI-Quellen Führen Sie den folgenden Befehl aus, um den GKI-Kernel und die ABI-Artefakte zu erstellen:
tools/bazel run //common:kernel_aarch64_abi_dist
Dieser Befehl erstellt die aktuelle ABI-Darstellung und kopiert sie in
out_abi/kernel_aarch64/dist/abi.stg
zusammen mit dem erstellten Kernel und den Modulen.
Sie können am Ende des Befehls zusätzliche Argumente für die ABI-Tools angeben.
nach --
. Um beispielsweise das Ziel für ABI zu ändern und Artefakte zu erstellen,
kann die Option --dist_dir
verwenden:
tools/bazel run //common:kernel_aarch64_abi_dist -- --dist_dir=out/dist
Die ABI-Unterschiede zwischen dem Build und einer Referenzdarstellung analysieren
Das Ziel //common:kernel_aarch64_abi_dist
, das im obigen Befehl ausgeführt wurde,
analysiert und meldet alle ABI-Unterschiede, die zwischen Build und Referenz festgestellt wurden
Darstellung unter common/android/abi_gki_aarch64.stg
(definiert in
BUILD.bazel
)
Diese Unterschiede werden am Ende des Builds ausgegeben, wie in den
folgendes Beispiel:
INFO: From [stg] Comparing Kernel ABI @//common:kernel_aarch64_abi_diff:
INFO: ABI DIFFERENCES HAVE BEEN DETECTED!
Der gedruckte Bericht stammt aus dem Build-Artefakt unter
out_abi/kernel_aarch64/dist/abi_stgdiff/abi.report.short
zusammen mit Berichten in
anderen Formaten.
Die Automatisierung sollte den Exit-Code des Build-Befehls verwenden. Dieser ist nicht null, wenn gefunden werden.
Beachten Sie, dass
Entwicklungsphase
Zweige, einschließlich android-mainline
, haben keine Referenz-ABI-Darstellung.
Andernfalls erkennt //common:kernel_aarch64_abi_dist
keine Unterschiede.
Referenz-ABI-Darstellung aktualisieren
Jede Änderung, die sich auf das Kernel-ABI auswirkt, z. B.
Aktualisierung der Symbolliste
muss in der ABI-Referenzdarstellung widergespiegelt werden
(common/android/abi_gki_aarch64.stg
, definiert in
build.bazel).
Dazu müssen Sie den folgenden Befehl ausführen:
tools/bazel run //common:kernel_aarch64_abi_update
Dieser Befehl führt alle Schritte im Schritt
Analysieren Sie die ABI-Unterschiede und aktualisieren Sie zusätzlich die
Referenzdarstellung in den Quellen. Das aktualisierte ABI kann dann
denselben Commit wie die Änderung. Beziehen Sie die ABI-Unterschiede
Bericht in $DIST_DIR/abi.report.short
in der Commit-Nachricht.
ABI-Monitoring und Geräteziele
Das ABI-Monitoring muss nur für Core-Kernel-Build-Ziele konfiguriert werden. Gemischt
Build-Konfigurationen (Konfigurationen, die base_kernel
definieren), die direkt mit
Der GKI-Kernel muss nur Unterstützung für das Tracking des Gerätesymbols hinzufügen.
Liste.
Die ABI-Definition sollte mit dem GKI-Build aktualisiert werden.
Weitere Informationen finden Sie in der Referenzdokumentation zu Kleaf: Unterstützung der ABI-Überwachung (Gerät).
Ältere Kernel-Versionen
Android 13
Die Erstellungsanleitung entspricht größtenteils
Android 14, außer dass das ABI-Format XML ist und
Die ABI-Referenzdarstellung ist common/android/abi_gki_aarch64.xml
.
Android 13 und niedriger
Wie bei Android 13 ist das ABI-Format XML.
Ältere Kernel verwenden build.sh
anstelle von Kleaf. Für die ABI-Überwachung solltest du Folgendes verwenden:
build_abi.sh
, die dieselben Umgebungsvariablen zur Anpassung des
als build.sh
erstellen. Beispiel:
BUILD_CONFIG=common/build.config.gki.aarch64 build/build_abi.sh
Dadurch wird der Kernel erstellt und die ABI-Darstellung in die Datei OUT_DIR
extrahiert.
(standardmäßig out_abi
) und entspricht dem
//common:kernel_aarch64_abi_dist
-Ziel von Kleaf (siehe
Build-Kernel- und ABI-Artefakte)
Die ABI-Referenzdarstellung wird in android/abi_gki_aarch64.xml
so gespeichert:
definiert durch die Variable ABI_DEFINITION
in common/build.config.gki.aarch64
.
Wenn Sie die Kernel-ABI-Darstellung aktualisieren müssen, ist dies die einfachste Methode,
um die Optionen --update
und --print-report
zu verwenden:
BUILD_CONFIG=common/build.config.gki.aarch64 build/build_abi.sh --update --print-report
--print-report
gibt die ABI-Unterschiede zwischen der Datei in ihrer jetzigen Form aus
und ein neu generiertes ABI.
Die Option --update
überschreibt die ABI-Referenzdarstellung. Außerdem
die
Aktualisierung der Symbolliste
wenn BUILD_CONFIG
für ein Gerät mit konfiguriertem KMI_SYMBOL_LIST
verwendet wird.