Конвертировать из Make в Soong

До выпуска 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 . Обычно процесс преобразования включает следующие этапы.

  1. Настройте среду терминала и соберите инструмент androidmk .

    androidmk — это утилита командной строки, которая анализирует файл Android.mk и пытается создать аналогичный файл Android.bp . Она может преобразовать большинство файлов Android.mk в Android .bp практически без ручного редактирования.

    cd <root-of-the-tree>
    source build/envsetup.sh
    lunch <lunch-target>
    m androidmk
    
  2. Сборка с помощью Android.mk : sh m <module-name>

  3. Запустите инструмент преобразования androidmk : sh androidmk <path-to-Android.mk>/Android.mk > <path-to-Android.bp>/Android.bp

  4. Вручную отредактируйте файл Android.bp :

    • Устраните все предупреждения, выдаваемые инструментом androidmk .
    • Сохраните или добавьте заголовок об авторских правах. При добавлении нового заголовка используйте текущий год.
  5. Удалите файл Android.mk и выполните сборку с использованием файла Android.bp .

  6. Проверьте правильность преобразования, сравнив созданные артефакты или выполнив модульные и функциональные тесты.

  7. Сохраните изменения и загрузите для проверки.

Более подробную информацию см. в описании формата файла Android.bp .