Android Studio CMake собрать один раз для всех вариантов сборки - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть проект с кодом 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 Ответ

0 голосов
/ 20 декабря 2018

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

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

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

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