У меня есть проект с кодом 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 ++ только один раз, независимо от вариантов сборки и разновидностей?
По умолчанию Android Studio IDE вместе с CMake и Gradle генерирует серию собственных задач сборки, названных с помощью externalNative<BuildVariant>Build
в зависимости от ваших типов сборки и вкусов. Если вы хотите исказить это поведение, некоторые обходные пути, как показано ниже:
shared-native
, Для этого решения необходимо учитывать следующие пункты:
.so
файлы в правильном месте, что другие проекты могут видеть и связывать с. debug
а также release
типы сборки для этого shared-native
Модуль проекта, чтобы избежать слишком много раз перестроить. Или вы можете просто позволить другим вашим проектам зависеть от типа релиза, так что он будет построен только ОДИН РАЗ. Других решений пока нет …