Przed wydaniem Androida 7.0 Android używał wyłącznie narzędzia GNU Make 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, nie można go było skalować ani łatwo testować. System kompilacji Soong
zapewnia elastyczność wymaganą w przypadku kompilacji Androida. Wprowadzamy istotne zmiany w systemie kompilacji Androida. Wycofujemy system kompilacji Make (Android.mk
) i zastępujemy go systemem Soong (Android.bp
).
Dlatego oczekujemy, że deweloperzy platform jak najszybciej przejdą z Make na Soong. Aby uzyskać pomoc, wyślij pytania do grupy dyskusyjnej Android Building w Google.
Co to jest Soong?
System kompilacji Soong został wprowadzony w Androidzie 7.0 (Nougat) jako zamiennik Make. Wykorzystuje narzędzie Kati, czyli klon GNU Make, oraz komponent systemu kompilacji Ninja, aby przyspieszyć kompilowanie Androida.
Ogólne instrukcje znajdziesz w opisie Android Make Build System w Android Open Source Project (AOSP), a o zmianach w systemie kompilacji dla osób piszących pliki Android.mk dowiesz się z artykułu Build System Changes for Android.mk Writers. Definicje kluczowych terminów znajdziesz w hasłach związanych z kompilacją w słowniczku, a szczegółowe informacje w dokumentacji modułów Soong.
Porównanie Make i Soong
Poniżej znajdziesz porównanie konfiguracji Make z konfiguracją Soong, która wykonuje to samo zadanie w pliku konfiguracji Soong (Blueprint lub .bp
).
Tworzenie przykładu
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 dla testów znajdziesz w artykule Prosta konfiguracja kompilacji.
Podstawowa procedura konwersji
Konwersja pliku Android.mk
na plik Android.bp
zwykle przebiega zgodnie z tym ogólnym przepływem pracy przy użyciu narzędzia pomocniczego androidmk
. Podczas konwersji zwykle wykonuje się te czynności:
Skonfiguruj środowisko terminala i skompiluj narzędzie
androidmk
.androidmk
to narzędzie wiersza poleceń, które analizuje plikAndroid.mk
i próbuje wygenerować analogiczny plikAndroid.bp
. Może on przekonwertować większośćAndroid.mk
plików na formatAndroid
.bp przy niewielkich zmianach ręcznych lub bez nich.cd <root-of-the-tree> source build/envsetup.sh lunch <lunch-target> m androidmk
Kompilacja 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.bp
Ręcznie edytuj plik
Android.bp
:- Rozwiąż problemy widoczne w ostrzeżeniach wyświetlanych przez
androidmk
. - zachować lub dodać nagłówek dotyczący praw autorskich; Jeśli dodajesz nowy, użyj bieżącego roku.
- Rozwiąż problemy widoczne w ostrzeżeniach wyświetlanych przez
Usuń plik
Android.mk
i skompiluj go za pomocą plikuAndroid.bp
.Sprawdź konwersję, porównując utworzone artefakty lub przeprowadzając testy jednostkowe i funkcjonalne.
Zapisz zmiany i prześlij je do sprawdzenia.
Więcej informacji znajdziesz w artykule Format pliku Android.bp.