Android Studio CMake为所有构建变体构建一次

时间:2018-12-19 08:53:47

标签: android c++ android-studio cmake build-variant

我有一个带有C ++代码(JNI)的项目,并且有许多构建变体和组合。这些用于实现应用程序的不同品牌/风格(即颜色,样式,图标等)。

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

  • customerNDebug
  • customerNDebugproguard
  • customerNRelease

无论如何,每种产品口味的C / C ++层相同

通常,Android Studio中的

CMake 会为每个构建变体编译C代码。如果您拥有诸如“ {debug”和“ release”之类的构建变体,而它们的结果代码实际上是不同的,那么这是有意义的。但是,对于我拥有的构建变体,编译后的输出始终是相同的。

目前,C / C ++代码的编译是使用我们项目中的外部工具完成的,而我想仅在Android Studio中使用 CMake 进行编译,以仅对C / C ++代码提供适当的IDE支持。因此,对我而言,一个构建就足够了。

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

1 个答案:

答案 0 :(得分:2)

默认情况下,Android Studio IDE会与CMake和Gradle一起根据您的构建类型和风格生成一系列以externalNative<BuildVariant>Build命名的本机构建任务。如果您想扭曲此行为,请采取以下解决方法:

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

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

  1. 将您的.so文件放置到其他项目可以查看和链接的适当位置。
  2. 您只能为此debug模块项目添加releaseshared-native构建类型,以避免过多的重新构建。或者,您可以简单地让您的其他项目取决于发行类型,以便仅一次构建。
相关问题