Przed wydaniem Androida 7.0 Android używał
GNU Make
wyłącznie do opisywania i wykonywania reguł kompilacji. System kompilacji Make jest powszechnie obsługiwany i używany, ale w przypadku Androida stał się powolny, podatny na błędy, nieskalowalny i trudny do testowania. System kompilacji Soong zapewnia elastyczność wymaganą do kompilacji Androida. Wprowadzamy znaczące zmiany w systemie kompilacji Androida, wycofując system kompilacji Make (Android.mk) i zastępując go systemem Soong (Android.bp).
Z tego powodu oczekuje się, że deweloperzy platformy jak najszybciej przejdą z Make na Soong. Pytania należy przesyłać do Android Building grupy dyskusyjnej Google Group.
Co to jest Soong?
System kompilacji Soong został wprowadzony w Androidzie 7.0 (Nougat) jako zamiennik Make. Wykorzystuje on klon narzędzia Kati GNU Make i komponent systemu kompilacji Ninja, aby przyspieszyć kompilację Androida.
Ogólne instrukcje i informacje o zmianach w systemie kompilacji dla autorów Android.mk znajdziesz w opisie systemu kompilacji Android Make w projekcie Android Open Source Project (AOSP). Definicje najważniejszych terminów znajdziesz w hasłach związanych z kompilacją w słowniku, a szczegółowe informacje – w dokumentacji Soong Modules Reference.
Porównanie Make i Soong
Poniżej znajdziesz porównanie konfiguracji Make z konfiguracją Soong, która osiąga ten sam efekt w pliku konfiguracji Soong (Blueprint lub .bp).
Przykład Make
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)
Przykład Soong
cc_library_shared {
name: "libxmlrpc++",
rtti: true,
cppflags: [
"-Wall",
"-Werror",
"-fexceptions",
],
export_include_dirs: ["src"],
srcs: ["src/**/*.cpp"],
target: {
darwin: {
enabled: false,
},
},
}
Przykłady konfiguracji Soong dotyczących testów znajdziesz w artykule Simple build configuration (Prosta konfiguracja kompilacji).
Podstawowa procedura konwersji
Konwersja pliku Android.mk na plik Android.bp zwykle przebiega według tego ogólnego schematu z użyciem narzędzia pomocniczego androidmk. Konwersja zwykle obejmuje te kroki:
Skonfiguruj środowisko terminala i skompiluj narzędzie
androidmk.androidmkto narzędzie wiersza poleceń, które analizuje plikAndroid.mki próbuje wygenerować analogiczny plikAndroid.bp. Może ono przekonwertować większość plikówAndroid.mkna plikiAndroid.bp przy niewielkich lub żadnych zmianach ręcznych.cd <root-of-the-tree> source build/envsetup.sh lunch <lunch-target> m androidmkSkompiluj za pomocą
Android.mk:sh m <module-name>Uruchom narzędzie do konwersji
androidmk:sh androidmk <path-to-Android.mk>/Android.mk > <path-to-Android.bp>/Android.bpRęcznie edytuj plik
Android.bp:- Usuń ostrzeżenia wygenerowane przez narzędzie
androidmk. - Zachowaj lub dodaj nagłówek dotyczący praw autorskich. Jeśli dodajesz nowy, użyj bieżącego roku.
- Usuń ostrzeżenia wygenerowane przez narzędzie
Usuń plik
Android.mki skompiluj za pomocą plikuAndroid.bp.Sprawdź poprawność konwersji, porównując skompilowane artefakty lub uruchamiając testy jednostkowe i funkcjonalne.
Zapisz zmiany i prześlij je do sprawdzenia.
Więcej informacji znajdziesz w artykule Format pliku Android.bp.