Android Studio CMake собрать один раз для всех вариантов сборки
У меня есть проект с кодом C++ (JNI) и множеством вариантов сборки и комбинаций. Они используются для реализации различных брендов / вкусов приложения (т. Е. Цвета, стили, значки, ...).
Например, могут быть варианты сборки для n клиентов:
customerNDebug
customerNDebugproguard
customerNRelease
,
В любом случае, уровень C/C++ одинаков для каждого продукта.
Обычно CMake в Android Studio компилирует C-код для каждого варианта сборки. Это имеет смысл, если у вас есть варианты сборки типа "debug
" а также "release
"где результирующий код на самом деле отличается. Однако для вариантов сборки, которые у меня есть, скомпилированный вывод всегда одинаков.
На данный момент компиляция кода C/C++ выполняется с использованием внешнего инструмента в нашем проекте, и я хочу скомпилировать с использованием CMake в Android Studio только для надлежащей поддержки IDE кода C/C++. Так что для меня будет достаточно одной сборки.
Можно ли заставить Android Studio создавать код C/C++ только один раз, независимо от вариантов сборки и разновидностей?
1 ответ
По умолчанию Android Studio IDE вместе с CMake и Gradle генерирует серию собственных задач сборки, названных с помощью externalNative<BuildVariant>Build
в соответствии с вашими типами сборки и вкусами. Если вы хотите исказить это поведение, некоторые обходные пути, как показано ниже:
- Создайте проект модуля Android Studio, который собирает только ваш собственный код, например
shared-native
, - Пусть остальные ваши модули зависят от этого проекта.
Для этого решения необходимо учитывать следующие пункты:
- Положить ваши
.so
файлы в правильном месте, что другие проекты могут видеть и связывать с. - Вы можете включить только
debug
а такжеrelease
типы сборки для этогоshared-native
модульный проект, чтобы избежать слишком много раз перестроить. Или вы можете просто позволить другим вашим проектам зависеть от типа выпуска, чтобы он был собран только ОДИН РАЗ.