Android Gradle 插件ProductFlavor 配置 ( ProductFlavor#externalNativeBuild配置 | cmake 配置 | ndkBuild 配置 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Gradle 插件ProductFlavor 配置 ( ProductFlavor#externalNativeBuild配置 | cmake 配置 | ndkBuild 配置 )相关的知识,希望对你有一定的参考价值。

文章目录

Android Plugin DSL Reference 参考文档 :





一、ProductFlavor 配置



ProductFlavor 参考文档 : com.android.build.gradle.internal.dsl.ProductFlavor.html

android#defaultConfig 层级与 android 层级定义的 externalNativeBuild 配置是不同的 ;

上一篇博客 【Android Gradle 插件】ProductFlavor 配置 ( AppExtension#externalNativeBuild 配置 | cmake 配置 | ndkBuild 配置 ) 分析了 android 层级定义的 externalNativeBuild 配置 , 也就是在 AppExtension 中定义的 externalNativeBuild 配置 ;


1、ProductFlavor#externalNativeBuild 配置


android#defaultConfig 层级的 externalNativeBuild 配置 , 也就是 ProductFlavor 中的 externalNativeBuild 配置是定义在 ProductFlavor 中的 externalNativeBuild ;

该配置类型是 ExternalNativeBuildOptions 类型的 , 完整类名是

com.android.build.gradle.internal.dsl.ExternalNativeBuildOptions


参考文档 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.ProductFlavor.html#com.android.build.gradle.internal.dsl.ProductFlavor:externalNativeBuild


这里注意 , 与 AppExtension#externalNativeBuild 配置进行区分 , AppExtension#externalNativeBuild 配置类型是 ExternalNativeBuild 类型的 ;

此处 ProductFlavor#externalNativeBuild 配置是 ExternalNativeBuildOptions 类型的 ;


2、ExternalNativeBuildOptions 类型配置


ExternalNativeBuildOptions 配置中 , 也是配置 cmake 和 ndkBuild 配置选项 ;

  • cmake 配置是 ExternalNativeCmakeOptions 类型的 ;
  • ndkBuild 配置是 ExternalNativeNdkBuildOptions 类型的 ;

参考文档 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.ExternalNativeBuildOptions.html


3、ExternalNativeCmakeOptions 类型配置


ExternalNativeCmakeOptions 配置项 :

arguments 配置 : CMake 参数 ;

CMake的每个变量参数。
例如:
参数“-DCMAKE_VERBOSE_MAKEFILE=TRUE”
有关可以配置的属性列表,请参阅CMake变量列表。

( 机翻文档 )

CMake 变量列表 : https://developer.android.com/ndk/guides/cmake.html#variables


abiFilters 配置 : 配置要编译的动态库类型 , “armeabi-v7a” , “arm64-v8a”, “x86”, “x86_64” 四种可配置项 ;

ABIs Gradle应该独立于它打包到APK中的每种变体构建。在大多数情况下,您只需要使用NdkOptions指定所需的ABI。abiFilter(),它控制哪些ABIs Gradle构建并打包到APK中。

( 机翻文档 )

cFlags 配置 : C 编译配置 ;

C编译器的每变量标志。
例如:
cFlags“-D_示例_C_标志1”,“-D_示例_C_标志2

( 机翻文档 )

cppFlags 配置 : C++ 编译配置 ;

C++编译器的每个变体标志。
例如:
cppFlags“-D_ustdc_格式_宏”

( 机翻文档 )

targets 配置 : 配置打包的目标库 ;

根据CMake项目中Gradle应该构建并打包到APK中的变体目标库。
例如,如果您的CMake项目定义了两个库,请选择一个。例二。因此,您可以告诉Gradle只构建并打包libexample one。具体如下:
目标是“示例一”
未配置此属性时,Gradle会生成并打包所有可用的共享对象目标。

参考文档 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.ExternalNativeCmakeOptions.html


4、ExternalNativeNdkBuildOptions 类型配置


除了 arguments 配置不同之外 , 其它与 ExternalNativeCmakeOptions 类型配置 基本相同 ;

arguments 配置 : 在 ExternalNativeNdkBuildOptions 配置中的 arguments 配置 , 需要与 Android.mk 和 Application.mk 构建脚本 相对应 ;

ndk构建设置的每变量参数也可用于 Android.mk及其 Application.mk脚本。
例如:
参数“NDK_APPLICATION_MK:=APPLICATION.MK”

( 机翻文档 )

参考文档 : com.android.build.gradle.internal.dsl.ExternalNativeNdkBuildOptions.html


以上是关于Android Gradle 插件ProductFlavor 配置 ( ProductFlavor#externalNativeBuild配置 | cmake 配置 | ndkBuild 配置 )的主要内容,如果未能解决你的问题,请参考以下文章

Android Gradle 插件Gradle 自定义 Plugin 插件 ③ ( 自定义插件作用 | Android Gradle 插件的扩展 | 自定义 Extension 扩展 )

Android Gradle 插件Gradle 自定义 Plugin 插件 ⑥ ( 在 buildSrc 模块中依赖 Android Gradle 插件 | 完整代码示例 )

Android Gradle 插件Gradle 自定义 Plugin 插件 ⑥ ( 在 buildSrc 模块中依赖 Android Gradle 插件 | 完整代码示例 )

Android Gradle 插件Gradle 自定义 Plugin 插件 ② ( buildSrc 目录中实现 Gradle 插件 | 实现 Gradle 插件代码 | 模块引入插件并编译 )

Android Gradle 插件Android Module 模块 build.gradle 构建脚本 Groovy 语法分析 ① ( Gradle 二进制插件引入 | Gradle依赖配置 )

Android Gradle 插件Android Module 模块 build.gradle 构建脚本 Groovy 语法分析 ① ( Gradle 二进制插件引入 | Gradle依赖配置 )