Сборка 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++ только один раз, независимо от вариантов сборки и вкусов?

3
0
557
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

По умолчанию Android Studio IDE вместе с CMake и Gradle будет генерировать серию собственных задач сборки с именами externalNative<BuildVariant>Build в соответствии с вашими типами сборки и разновидностями. Если вы хотите изменить это поведение, можно найти обходной путь, как показано ниже:

  1. Создайте проект модуля Android Studio, который строит только ваш собственный код, например shared-native.
  2. Пусть остальные ваши модули зависят от этого проекта.

Для этого решения вам необходимо учитывать следующие моменты:

  1. Поместите ваши файлы .so в надлежащее место, чтобы другие проекты могли видеть и ссылаться на них.
  2. Вы можете включать только типы сборки debug и release для этого проекта модуля shared-native, чтобы избежать слишком частой повторной сборки. Или вы можете просто позволить другим вашим проектам зависеть от типа выпуска, чтобы он был собран только ОДНАЖДЫ.

Как включить только версию release? Пока я использую android.variantFilter, чтобы сказать Android Studio не создавать все. Это работает для меня и выглядит очень многообещающе! Спасибо

mihca 02.01.2019 15:55

Другие вопросы по теме