前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Android Gradle 插件】ProductFlavor 配置 ( ProductFlavor#externalNativeBuild配置 | cmake 配置 | ndkBuild 配置 )

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

作者头像
韩曙亮
发布2023-03-30 11:27:26
1.6K0
发布2023-03-30 11:27:26
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

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 类型的 , 完整类名是

代码语言:javascript
复制
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 参数 ;

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

( 机翻文档 )

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

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

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

( 机翻文档 )

cFlags 配置 : C 编译配置 ;

代码语言:javascript
复制
C编译器的每变量标志。
例如:
cFlags“-D_示例_C_标志1”,“-D_示例_C_标志2”

( 机翻文档 )

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

代码语言:javascript
复制
C++编译器的每个变体标志。
例如:
cppFlags“-D_ustdc_格式_宏”

( 机翻文档 )

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

代码语言:javascript
复制
根据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 构建脚本 相对应 ;

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

( 机翻文档 )

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


本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-02-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、ProductFlavor 配置
    • 1、ProductFlavor#externalNativeBuild 配置
      • 2、ExternalNativeBuildOptions 类型配置
        • 3、ExternalNativeCmakeOptions 类型配置
          • 4、ExternalNativeNdkBuildOptions 类型配置
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档