У меня есть проект с кодом C++ (JNI) и множеством вариантов сборки и комбинаций. Они используются для реализации различных брендов / вкусов приложения (например, цветов, стилей, значков и т. д.).
Например, для n заказчиков могут быть варианты сборки:
customerNDebugcustomerNDebugproguardcustomerNRelease.В любом случае уровень 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, чтобы избежать слишком частой повторной сборки. Или вы можете просто позволить другим вашим проектам зависеть от типа выпуска, чтобы он был собран только ОДНАЖДЫ.
Как включить только версию
release? Пока я используюandroid.variantFilter, чтобы сказать Android Studio не создавать все. Это работает для меня и выглядит очень многообещающе! Спасибо