Vor der Veröffentlichung von Android 7.0 verwendete Android
GNU Make
ausschließlich, um die Build-Regeln zu beschreiben und auszuführen. Das Make-Build-System wird weitgehend unterstützt und verwendet, wurde aber bei der Größe von Android langsam, fehleranfällig, nicht skalierbar und schwer zu testen. Das Soong-Build-System bietet die Flexibilität, die für Android-Builds erforderlich ist. Wir nehmen erhebliche Änderungen am Android-Build-System vor, stellen das Make-Build-System (Android.mk) ein und ersetzen es durch Soong (Android.bp).
Aus diesem Grund sollten Plattformentwickler so schnell wie möglich von Make zu Soong wechseln. Fragen können Sie in der Google-Gruppe Android Building stellen.
Was ist Soong?
Das Soong-Build-System wurde in Android 7.0 (Nougat) eingeführt, um Make zu ersetzen. Es nutzt das Kati GNU Make-Klon-Tool und die Ninja Build-System Komponente, um die Builds von Android zu beschleunigen.
Eine allgemeine Anleitung finden Sie in der Beschreibung des Android-Make-Build-Systems im Open Source-Projekt für Android (AOSP). Informationen zu den Änderungen, die für die Umstellung von Make auf Soong erforderlich sind, finden Sie unter Build-Systemänderungen für Android.mk-Autoren. Definitionen wichtiger Begriffe finden Sie in den Build-bezogenen Einträgen im Glossar. Vollständige Details finden Sie in der Soong-Modulreferenz.
Vergleich von Make und Soong
Hier sehen Sie einen Vergleich der Make-Konfiguration mit Soong, wobei dasselbe in einer Soong-Konfigurationsdatei (Blueprint oder .bp) erreicht wird.
Make-Beispiel
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libxmlrpc++
LOCAL_MODULE_HOST_OS := linux
LOCAL_RTTI_FLAG := -frtti
LOCAL_CPPFLAGS := -Wall -Werror -fexceptions
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/src
LOCAL_SRC_FILES := $(call \
all-cpp-files-under,src)
include $(BUILD_SHARED_LIBRARY)
Soong-Beispiel
cc_library_shared {
name: "libxmlrpc++",
rtti: true,
cppflags: [
"-Wall",
"-Werror",
"-fexceptions",
],
export_include_dirs: ["src"],
srcs: ["src/**/*.cpp"],
target: {
darwin: {
enabled: false,
},
},
}
Beispiele für testspezifische Soong-Konfigurationen finden Sie unter Einfache Build-Konfiguration.
Grundlegende Konvertierungsprozedur
Die Konvertierung einer Android.mk-Datei in eine Android.bp-Datei folgt in der Regel diesem allgemeinen Workflow mit dem Hilfstool androidmk. Im Allgemeinen werden bei der Konvertierung die folgenden Schritte ausgeführt.
Richten Sie die Terminalumgebung ein und erstellen Sie das Tool
androidmk.androidmkist ein Befehlszeilentool, das eineAndroid.mk-Datei parst und versucht, eine analogeAndroid.bp-Datei auszugeben. Die meistenAndroid.mk-Dateien können mit wenigen oder keinen manuellen Änderungen inAndroid.bp konvertiert werden.cd <root-of-the-tree> source build/envsetup.sh lunch <lunch-target> m androidmkBuild mit
Android.mk:sh m <module-name>Führen Sie das
androidmkKonvertierungstool aus:sh androidmk <path-to-Android.mk>/Android.mk > <path-to-Android.bp>/Android.bpBearbeiten Sie die Datei
Android.bpmanuell:- Beheben Sie alle Warnungen, die vom Tool
androidmkausgegeben werden. - Behalten Sie eine Copyright-Kopfzeile bei oder fügen Sie eine hinzu. Wenn Sie eine neue hinzufügen, verwenden Sie das aktuelle Jahr.
- Beheben Sie alle Warnungen, die vom Tool
Entfernen Sie die Datei
Android.mkund erstellen Sie den Build mit der DateiAndroid.bp.Prüfen Sie die Konvertierung, indem Sie die erstellten Artefakte vergleichen oder Unit- und Funktionstests ausführen.
Speichern Sie die Änderungen und laden Sie sie zur Überprüfung hoch.
Weitere Informationen finden Sie unter Android.bp-Dateiformat.