3

我有一个包含 C++ 代码 (JNI) 和大量构建变体和组合的项目。这些用于实现应用程序的不同品牌/风格(即颜色、样式、图标......)。

例如,可能有 n 个客户的构建变体:

  • customerNDebug
  • customerNDebugproguard
  • customerNRelease.

无论如何,每个产品风味的 C/C++ 层都是相同的。

通常,Android Studio 中的CMake会为每个构建变体编译 C 代码。如果您有生成的代码实际上不同的“ debug”和“ ”之类的构建变体,这是有道理的。release但是,对于我拥有的构建变体,编译的输出总是相同的。

目前,C/C++ 代码的编译是使用我们项目中的外部工具完成的,我想在 Android Studio 中使用CMake进行编译,只是为了适当的 IDE 支持 C/C++ 代码。所以对我来说,一个单一的构建就足够了。

是否可以告诉 Android Studio 只构建一次 C/C++ 代码,无论构建变体和风格如何?

4

1 回答 1

2

默认情况下,Android Studio IDE 连同 CMake 和 Gradle 将externalNative<BuildVariant>Build根据您的构建类型和风格生成一系列以 命名的原生构建任务。如果您想扭转这种行为,一些解决方法如下:

  1. 创建一个仅构建您的本机代码的 Android Studio 模块项目,例如shared-native.
  2. 让你的其余模块依赖于这个项目。

对于此解决方案,您需要考虑以下几点:

  1. 将您的.so文件放在其他项目可以看到和链接的适当位置。
  2. 您只能为该模块项目包含debug和构建类型,以避免重新构建太多次。或者你可以简单地让你的其他项目依赖于发布类型,这样它就只会被构建一次releaseshared-native
于 2018-12-20T01:46:08.537 回答