До выпуска Android 7.0 Android использовала исключительно GNU Make для описания и выполнения правил сборки. Система сборки Make широко поддерживается и используется, но в масштабах Android стала медленной, подверженной ошибкам, немасштабируемой и сложной для тестирования. Система сборки Soong обеспечивает необходимую гибкость для сборок Android. Мы вносим значительные изменения в систему сборки Android, объявляя устаревшей систему сборки Make ( Android.mk
) и заменяя её на Soong ( Android.bp
).
По этой причине разработчикам платформ следует как можно скорее перейти с Make на Soong. Задавайте вопросы в Google-группу Android Building, чтобы получить поддержку.
Что такое Сунг?
Система сборки Soong была представлена в Android 7.0 (Nougat) на замену Make. Она использует инструмент клонирования Kati GNU Make и компонент системы сборки Ninja для ускорения сборки Android.
Общие инструкции см. в описании системы сборки Android Make в проекте Android Open Source Project (AOSP), а также в разделе «Изменения системы сборки для разработчиков Android.mk», где рассказывается об изменениях, необходимых для адаптации Make к Soong. Определения ключевых терминов см. в разделах глоссария , посвященных сборке , и в справочнике модулей Soong для получения полной информации.
Сравнение Марка и Сунга
Ниже приведено сравнение конфигурации Make с Soong, обеспечивающее тот же результат в файле конфигурации Soong (Blueprint или .bp
).
Подайте пример
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)
Пример Сонга
cc_library_shared {
name: "libxmlrpc++",
rtti: true,
cppflags: [
"-Wall",
"-Werror",
"-fexceptions",
],
export_include_dirs: ["src"],
srcs: ["src/**/*.cpp"],
target: {
darwin: {
enabled: false,
},
},
}
Примеры конфигурации Soong для конкретных тестов см. в разделе Простая конфигурация сборки .
Основная процедура преобразования
Преобразование файла Android.mk
в файл Android.bp
обычно выполняется по следующей схеме с использованием вспомогательного инструмента androidmk
. Обычно процесс преобразования включает следующие этапы.
Настройте среду терминала и соберите инструмент
androidmk
.androidmk
— это утилита командной строки, которая анализирует файлAndroid.mk
и пытается создать аналогичный файлAndroid.bp
. Она может преобразовать большинство файловAndroid.mk
вAndroid
.bp практически без ручного редактирования.cd <root-of-the-tree> source build/envsetup.sh lunch <lunch-target> m androidmk
Сборка с помощью
Android.mk
:sh m <module-name>
Запустите инструмент преобразования
androidmk
:sh androidmk <path-to-Android.mk>/Android.mk > <path-to-Android.bp>/Android.bp
Вручную отредактируйте файл
Android.bp
:- Устраните все предупреждения, выдаваемые инструментом
androidmk
. - Сохраните или добавьте заголовок об авторских правах. При добавлении нового заголовка используйте текущий год.
- Устраните все предупреждения, выдаваемые инструментом
Удалите файл
Android.mk
и выполните сборку с использованием файлаAndroid.bp
.Проверьте правильность преобразования, сравнив созданные артефакты или выполнив модульные и функциональные тесты.
Сохраните изменения и загрузите для проверки.
Более подробную информацию см. в описании формата файла Android.bp .