До выхода Android 7.0 для описания и выполнения правил сборки Android использовалась исключительно система GNU Make . Система сборки Make широко поддерживается и используется, но в масштабах Android стала медленной, подверженной ошибкам, не масштабируемой и сложной для тестирования. Система сборки Soong обеспечивает необходимую гибкость для сборок Android. Мы вносим существенные изменения в систему сборки Android, отказываясь от системы сборки Make ( Android.mk ) и заменяя её на Soong ( Android.bp ).
По этой причине разработчикам платформы рекомендуется как можно скорее перейти с Make на Soong. Для получения поддержки отправляйте вопросы в группу Google по разработке Android-приложений .
Что такое Сунг?
Система сборки Soong была представлена в Android 7.0 (Nougat) и заменила Make. Она использует инструмент клонирования GNU Make Kati и компонент системы сборки Ninja для ускорения сборки Android.
Общие инструкции см. в описании системы сборки Android Make в проекте Android Open Source Project (AOSP), а информацию о необходимых изменениях для адаптации от Make к Soong — в разделе «Изменения системы сборки для разработчиков Android.mk» . Определения ключевых терминов см. в разделах глоссария , посвященных сборке , а полную информацию — в справочнике модулей Soong .
Сравнение Make и Song
Здесь приведено сравнение конфигурации 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с минимальными изменениями или без них.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 .