Android Studio Cmake曾经为所有构建变体构建一次

Android Studio CMake build once for all build variants

本文关键字:构建 一次 Android 曾经 Cmake Studio      更新时间:2023-10-16

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

例如,可以为n个客户提供构建变体:

  • customerNDebug
  • customerNDebugproguard
  • customerNRelease

无论如何,每种产品味道。

的C/C 层是相同的

通常 cmake 在Android Studio中为每个构建变体编译C代码。如果您具有构建变体,例如" debug"answers" release",这是有道理的,而所得代码实际上有所不同。但是,对于我拥有的构建变体,编译的输出始终相同。

目前使用项目中的外部工具完成了C/C 代码的汇编,我想在Android Studio中使用 cmake 进行编译,仅用于适当的IDE支持C/C 代码。因此,对我来说,一个构建就足够了。

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

默认情况下,Android Studio IDE与Cmake和Gradle一起将根据您的构建类型和口味生成一系列用externalNative<BuildVariant>Build命名的本机构建任务。如果您想扭转这种行为,则某些解决方法如下:

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

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

  1. 将您的.so文件放入其他项目可以看到并链接的适当位置。
  2. 您只能在此shared-native模块项目中包括debugrelease构建类型,以避免重新构建过多。或者,您可以简单地让其他项目取决于发布类型,以便将其仅构建曾经