Android Gradle 插件ProductFlavor 配置 ( ProductFlavor#externalNativeBuild配置 | cmake 配置 | ndkBuild 配置 )
Posted 韩曙亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Gradle 插件ProductFlavor 配置 ( ProductFlavor#externalNativeBuild配置 | cmake 配置 | ndkBuild 配置 )相关的知识,希望对你有一定的参考价值。
文章目录
Android Plugin DSL Reference 参考文档 :
-
AppExtension 文档位置 : android-gradle-dsl-gh-pages/2.3/com.android.build.gradle.AppExtension.html
-
android 模块配置文档 : android-gradle-dsl/2.3/com.android.build.gradle.AppExtension.html
-
ProductFlavor 文档 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.ProductFlavor.html
-
externalNativeBuild 配置 : com.android.build.gradle.internal.dsl.ProductFlavor:externalNativeBuild
-
ExternalNativeBuildOptions 文档位置 : android-gradle-dsl-gh-pages/2.3/com.android.build.gradle.internal.dsl.ExternalNativeBuildOptions.html
-
NdkBuildOptions 文档位置 : android-gradle-dsl-gh-pages/2.3/com.android.build.gradle.internal.dsl.NdkBuildOptions.html
-
CmakeOptions 文档位置 : android-gradle-dsl-gh-pages/2.3/com.android.build.gradle.internal.dsl.CmakeOptions.html
-
NDK 参考文档 : Add C and C++ Code to Your Project.
一、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
这里注意 , 与 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依赖配置 )