Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Studio CMake一次构建所有构建变体 我有一个C++代码(jnI)和大量的构建变量和组合的项目。这些用于实现应用程序的不同品牌/风格(即颜色、样式、图标等)_Android_C++_Android Studio_Cmake_Build Variant - Fatal编程技术网

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

Android Studio CMake一次构建所有构建变体 我有一个C++代码(jnI)和大量的构建变量和组合的项目。这些用于实现应用程序的不同品牌/风格(即颜色、样式、图标等),android,c++,android-studio,cmake,build-variant,Android,C++,Android Studio,Cmake,Build Variant,例如,可能有n个客户的构建变体: customerdebug customerdebugproguard 客户发布 无论如何,C/C++层对于每种产品口味都是相同的 通常,Android Studio中的CMake为每个构建变量编译C代码。如果您有像“debug”和“release”这样的生成变体,并且生成的代码实际上不同,那么这是有意义的。然而,对于我所拥有的构建变体,编译后的输出总是相同的 目前,C/C++代码的编译是在我们的项目中使用外部工具完成的,我只想在Android Studio

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

  • customerdebug
  • customerdebugproguard
  • 客户发布
无论如何,C/C++层对于每种产品口味都是相同的

通常,Android Studio中的CMake为每个构建变量编译C代码。如果您有像“
debug
”和“
release
”这样的生成变体,并且生成的代码实际上不同,那么这是有意义的。然而,对于我所拥有的构建变体,编译后的输出总是相同的

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


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

默认情况下,Android Studio IDE与CMake和Gradle将根据您的构建类型和风格生成一系列名为
externalNativeBuild
的本机构建任务。如果您想扭转这种行为,一些解决方法如下:

  • 创建一个Android Studio模块项目,该项目仅构建您的本机代码,例如
    共享本机
  • 让其余模块依赖于此项目 对于这个解决方案,你需要考虑以下几点:

  • 将您的
    。因此
    文件放在其他项目可以查看和链接的适当位置
  • 您只能为此
    共享本机
    模块项目包含
    debug
    release
    生成类型,以避免过多的重新生成。或者您可以简单地让您的其他项目取决于发布类型,以便只构建一次
    如何仅包括
    发行版
    版本?到目前为止,我使用android.variantFilter告诉androidstudio不要构建所有东西。这对我来说很有效,看起来非常有希望!谢谢