gradle是否可以编译c语言,build.gradle按条件编译与cmake配置
在build.gradle里面通过productFlavors就可以方便的实现不同的编译方案。
flavorDimensions定义维度
flavorDimensions 从单词字面理解知道是 “风味维度”,是需要结合 “产品风味(即productFlavors)” 来一起使用的。flavorDimensions 的使用会定义出维度,供接下来的 productFlavors 使用。
android {
// 省略其他参数
flavorDimensions('abi', 'version')
}
使用上面代码,则会定义出两个维度:version 和 abi。一个参数一个维度。
productFlavors的意义
productFlavors 从字面了解是“产品风味”。他需要和一个风味维度对接,否则会报错。
android{
// ...
flavorDimensions('abi', 'version')
// 创建产品风味
productFlavors {
v1 {
// 关联纬度
dimension 'version'
}
v2 {
dimension 'version'
}
x86 {
dimension 'abi'
}
armV7 {
dimension 'abi'
}
}
}
在 abi 维度上关联了两个产品,即 “armV7” 和 “x86”,在 version 的维度上关联了两个个产品,而这些维度的交织就会形成最终的风味,即我们上面所标出来的 “armV7V1”、“armV7V2”、“x86V1”、“x86V2”。
我们可以根据不同的风味,打出不同的apk包,便可以实现一套核心代码打出多个有些差异的包。
我的flavorDimensions & productFlavors
我的项目对abi不区分,只需要区分高通和mtk,所以维度就只定义了platform,cmake部分针对qcom和mtk分别定义了不同的宏,还可以指定其他native的参数。
flavorDimensions "platform"
productFlavors {
// Qualcomm platform
qcom {
dimension "platform"
externalNativeBuild {
cmake {
cppFlags "-std=c++11"
arguments "-DCMAKE_BUILD_TYPE=Release",
"-DUSE_QCOM=TRUE"
}
}
}
// mtk platform
mtk {
dimension "platform"
externalNativeBuild {
cmake {
cppFlags "-std=c++11"
arguments "-DCMAKE_BUILD_TYPE=Release",
"-DUSE_MTK=TRUE",
"-DCMAKE_ANDROID_NDK=\$(System.getenv('ANDROID_NDK_HOME'))"
}
}
}
}
实验证明上面的"-DCMAKE_ANDROID_NDK=$(System.getenv('ANDROID_NDK_HOME'))"不生效的。换成"-DANDROID_NDK=/home/tools/android-ndk/android-ndk-r19c"这样的绝对路径也不行。
只有通过修改local.properties才可以,可以通过编译脚本修改ndk.dir。
#!/usr/bin/env bash
#set build ndk to android-ndk-r19c
ndkdir=${ANDROID_NDK}
echo "ndk.dir=${ndkdir}" >> local.properties
# clean
./gradlew clean
# build qcom
./gradlew assembleqcomRelease
# build mtk
./gradlew assemblemtkRelease
参考:
https://blog.csdn.net/weixin_37625173/article/details/100867037
gradle是否可以编译c语言,build.gradle按条件编译与cmake配置相关推荐
- 【Android Gradle 插件】工程根目录下 build.gradle 配置文件 ( 远程仓库配置 | 依赖配置 | 所有子模块配置 | task clean 任务 )
文章目录 一.工程根目录下 build.gradle 配置文件 1.基本作用 2.远程仓库配置 3.依赖配置 3.所有子模块配置 4.task clean 任务 Android Plugin DSL ...
- 【Android Gradle 插件】Module 目录下 build.gradle 配置文件 ( android 闭包块配置 | AppExtension 扩展类型参考文档 )
文章目录 一.Module 目录下 build.gradle 配置文件 1.android 闭包块配置 2.AppExtension 扩展类型参考文档 Android Plugin DSL Refer ...
- 【Android Gradle 插件】Module 目录下 build.gradle 配置文件 ( plugins 闭包代码块中引入插件 | PluginAware#apply 方法引入插件 )
文章目录 一.Module 目录下 build.gradle 配置文件 1.plugins 闭包代码块中引入插件 2.PluginAware#apply 方法引入插件 Android Plugin D ...
- android build.gradle在哪里,android中的build.gradle是干什么用的
在编写程序的时候,有时候我们需要兼容不同系统版本的手机来进行真机测试,所以有时候我们需要修改sdk或者其他的东西的版本号,这时候我们就需要了解build.gradle文件了. 首先,在Android ...
- build.gradle配置
文章目录 1 build.gradle配置 1.1 project下的build.gradle 1.2 module下的build.gradle 2 Apk版本号的命名规则及配置方法 2.1 命名规则 ...
- 配置构建变体build.gradle的配置
google原文链接 https://developer.android.com/studio/build/build-variants.html#product-flavors 配置构建类型 您可以 ...
- Build gradle project info的暴力解决方式
之前是解决过这种问题的,但是昨天突然又遇到了,忘了解决方式,网上找了大半天没找到之前看的那篇文章-- 在github上下载的开源项目,在打开的时候总是会遇到这种问题.那是因为gradle网站被墙的原因 ...
- Android Gradle 学习笔记(四):Gradle 构建脚本
本节我们从整体的角度来介绍一下Gradle. 一.setting.gradle 在Gradle中,定义了一个设置文件,用于初始化以及工程树的配置.设置文件的默认的名字就是setting.gradle, ...
- Gradle介绍1-入门和IDEA整合(Gradle Wrapper)
1. Gradle 入门 1.1.Gradle 简介 Gradle 是一款Google 推出的基于 JVM. 通用灵活的项目构建工具, 支持 Maven,JCenter 多种第三方仓库;支持传递性依赖 ...
最新文章
- DataList在无数据记录时显示类似GridView空模板(EmptyDataTemplate)
- 浅谈深度学习(Deep Learning)的基本思想和方法
- 网络数据采集技术—Java网络爬虫入门与实战 书稿纠错
- 股票型基金和期货有什么区别?
- django 文件上传 研究
- html5效果案例,10个优秀HTML5网站案例赏析
- 服务器系统获取最高权限,webshell+servu获取系统最高权限
- semantic ui中文文档_求你别再用swagger了,给你推荐几个在线文档生成神器
- 大学生提高计算机应用能力,大学生计算机应用能力的培养策略
- 发现内存不能read和written的原因以及解决方法
- 从隔壁兄弟那爬点网页数据,整理成word文档
- 微信服务器在哪里修改密码,微信怎么修改密码?微信在哪里修改密码?
- DSP28335 CAN模块例程
- AXP221电源管理芯片使用注意点
- CSS3视窗单位vw、vh、vmin、vmax说明
- 联想小新padpro12.6 #Q706F 解锁输入TWRP教程
- c语言中换行符的ans2码,二级C语言复习
- 给大家分享一些IT网课资源的学习网站啦
- 在ubuntu 8.10下安装thunderbird中文版
- 感情这种事 即便是网恋也不能输!
热门文章
- 動態修改SiteMapPath路徑
- 遍历矩阵每一行穷举_[LeetCode] 566. 重塑矩阵
- dram和nand哪个难生产_仅300名员工,年产7台,订单排到5年后,比光刻机还难买...
- mysql8 修改加密方式_mysql8修改密码加密方式
- java中如何调出字体对话框_java 字体对话框
- 北师大计算机试题五答案,北京师范大学计算机软件及理论2022考研招生分析、参考书、真题等复习指导解析...
- java indexof方法_【3-14】Java中集合类list的增删改查
- jquery获取html页面参数乱码,JS或Jquery获取浏览器URL的参数值 汉字值乱码 并转码...
- Matlab给Ansys助攻
- 利用opencv对图像和检测框做任意角度的旋转