Android Plugin DSL Reference 参考文档 :
ProductFlavor 参考文档 : com.android.build.gradle.internal.dsl.ProductFlavor.html
在 android#defaultConfig
层级与 android
层级定义的 externalNativeBuild 配置是不同的 ;
上一篇博客 【Android Gradle 插件】ProductFlavor 配置 ( AppExtension#externalNativeBuild 配置 | cmake 配置 | ndkBuild 配置 ) 分析了 android
层级定义的 externalNativeBuild 配置 , 也就是在 AppExtension
中定义的 externalNativeBuild
配置 ;
android#defaultConfig 层级的 externalNativeBuild 配置 , 也就是 ProductFlavor 中的 externalNativeBuild 配置是定义在 ProductFlavor 中的 externalNativeBuild ;
该配置类型是 ExternalNativeBuildOptions 类型的 , 完整类名是
com.android.build.gradle.internal.dsl.ExternalNativeBuildOptions
这里注意 , 与 AppExtension#externalNativeBuild 配置进行区分 , AppExtension#externalNativeBuild 配置类型是 ExternalNativeBuild 类型的 ;
此处 ProductFlavor#externalNativeBuild 配置是 ExternalNativeBuildOptions 类型的 ;
ExternalNativeBuildOptions 配置中 , 也是配置 cmake 和 ndkBuild 配置选项 ;
参考文档 : android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.ExternalNativeBuildOptions.html
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
除了 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