我有一个带有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 ++代码一次,无论构建变体和样式如何?
答案 0 :(得分:2)
默认情况下,Android Studio IDE会与CMake和Gradle一起根据您的构建类型和风格生成一系列以externalNative<BuildVariant>Build
命名的本机构建任务。如果您想扭曲此行为,请采取以下解决方法:
shared-native
。 对于此解决方案,您需要考虑以下几点:
.so
文件放置到其他项目可以查看和链接的适当位置。 debug
模块项目添加release
和shared-native
构建类型,以避免过多的重新构建。或者,您可以简单地让您的其他项目取决于发行类型,以便仅一次构建。