Vor der Veröffentlichung von Android 7.0 wurden die Build-Regeln in Android ausschließlich mit GNU Make beschrieben und ausgeführt. Das Make-Build-System wird weitgehend unterstützt und verwendet, aber bei der Größe von Android wurde es langsam, fehleranfällig, nicht skalierbar und schwer zu testen. Das Soong-Build-System bietet die für Android-Builds erforderliche Flexibilität. Wir nehmen wesentliche Änderungen am Android-Build-System vor. Das Make-Build-System (Android.mk
) wird eingestellt und durch Soong (Android.bp
) ersetzt.
Aus diesem Grund wird von Plattformentwicklern erwartet, dass sie so schnell wie möglich von Make zu Soong wechseln. Wenn Sie Support benötigen, können Sie Fragen an die Google-Gruppe Android Building senden.
Was ist Soong?
Das Soong-Build-System wurde in Android 7.0 (Nougat) eingeführt, um Make zu ersetzen. Es nutzt das Kati-Tool, einen GNU Make-Klon, und die Ninja-Buildsystemkomponente, um Builds von Android zu beschleunigen.
Eine allgemeine Anleitung und Informationen zu den Änderungen am Build-System für Android.mk-Autoren finden Sie in der Beschreibung des Android Make Build System im Android Open Source Project (AOSP). Dort erfahren Sie auch, welche Änderungen erforderlich sind, um von Make zu Soong zu wechseln. Definitionen wichtiger Begriffe finden Sie im Glossar unter build-related entries. Ausführliche Informationen finden Sie in der Soong Modules Reference.
Vergleich zwischen Make und Soong
Hier ist ein Vergleich der Make-Konfiguration mit Soong, bei dem dasselbe in einer Soong-Konfigurationsdatei (Blueprint oder .bp
) erreicht wird.
Beispiel erstellen
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.
Grundlegendes Konvertierungsverfahren
Die Konvertierung einer Android.mk
-Datei in eine Android.bp
-Datei folgt in der Regel diesem allgemeinen Workflow mit dem androidmk
-Hilfsprogramm. Bei der Konvertierung werden in der Regel die folgenden Schritte ausgeführt.
Richten Sie die Terminalumgebung ein und erstellen Sie das Tool
androidmk
.androidmk
ist 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 androidmk
Mit dem
Android.mk
erstellen:sh m <module-name>
Führen Sie das
androidmk
-Konvertierungstool aus:sh androidmk <path-to-Android.mk>/Android.mk > <path-to-Android.bp>/Android.bp
Bearbeiten Sie die Datei
Android.bp
manuell:- Beheben Sie alle Warnungen, die vom
androidmk
-Tool ausgegeben werden. - Behalten Sie eine Kopfzeile mit Urheberrechtsangaben bei oder fügen Sie eine hinzu. Wenn Sie eine neue hinzufügen, verwenden Sie das aktuelle Jahr.
- Beheben Sie alle Warnungen, die vom
Entfernen Sie die Datei
Android.mk
und erstellen Sie den Build mit der DateiAndroid.bp
.Validieren 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.