Android Native 客户端属性配置系统使用说明

Android Native 客户端属性配置系统使用说明

  1. 背景和问题

现代 android 开发基本都基于 gradle
属性设置来进行定制化编译,随着项目的迭代,工程结构越发复杂,配置属性越来越多,越来越多的配置使得上手难度越来越大。

  1. 解决方案设计

一般而言,在 android 开发中,Gradle 属性系统可以通过三个地方指定:命令行、local.properties、gradle.properties。

很遗憾的是,gradle 官方只支持 命令行和 gradle.properties 中的读取,并不支持 local.properties
的读取加载,更不支持自定义装载优先级。

个人以为,gradle 的这种设计其实存在不足之处,给不少项目的灵活构建需求带来的不方便。

因此,我们需要自行实现一套 gradle 属性装载系统,以便实现分层、按需、灵活的属性配置系统。

为了尊重传统开发习惯,依然采用 gradle 属性来进行配置。

在架构上分为三层设计,属性读取依次从上层到下层读取,上层失败之后会 fallback 到下层:

在这里插入图片描述

在构建系统需要读取一个属性变量的时候,会按照图中的顺序依次读取,如果变量不存在的话,最终会读取失败。

工程中会默认内置一套配置参数在 gradle.properties
文件中,工程师也可以利用这个顺序来自定义修改系统默认参数,以便达到灵活配置和构建的需求。

  1. 使用指南

举一个典型的例子,我们在日常开发中经常会来配置是否联合 rn 工程来进行构建。

以往这个需求都是手动修改 build.gradle 文件中的代码,注释掉一部分之后才能实现脱离 rn 工程编译。

这样做不仅麻烦,而且容易误操作把注释的临时代码提交到仓库中。

现在这个需求可以通过如下两种方式完成(注意,如果不做任何配置,根据工程内置默认配置,rn 依然是自动联合的):

  1. 方案一:local.properties 配置
    在你的 local.properties 文件中添加如下配置:
...
# true 表示联合 rn,false 表示不联合使用内置的 bundle 来构建,这样可以加速 native 构建调试
mcd_include_rn=false
...
  1. 方案二:命令行配置

方案一适合短期内一直关闭 rn 联合,但是如果你只是想临时这一次关闭联合,那么你可以通过命令行参数来达到一次性指定的效果:

# 通过 -P 参数来指定 gradle 属性配置
# true 表示联合 rn,false 表示不联合
./gradlew :app:assembleDEVDebug -

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/37091.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新国都:昙花一现or未来可期?

从波动起伏到强势爆发,这份业绩能否持续? 今天我们抽取一名铁杆粉丝想要咨询的公司来说一说——新国都。 一句话总结这家以第三方支付为主营业务的公司业绩:盈利能力突然爆发,23年净利润暴增近16倍,24年Q1净利润大增6…

mysql解压版本安装5.7

1. 官网下载好解压版本 我这边5.7版本 https://dev.mysql.com/downloads/file/?id523570 mysql官网 创建 my.ini文件 内容如下 [client] #客户端设置,即客户端默认的连接参数# socket /data/mysqldata/3306/mysql.sock #用于本地连接的socket套接字 # 默…

ASP.NET MVC-简单例子-配置日志文件-log4net

环境: win10,SQL Server 2008 R2 安装 使用NuGet 安装时发现报错并无法安装: 现有 packages.config 文件中检测到一个或多个未解析包依赖项约束。必须解析所有依赖项约束以添加或更新包。如果正在更新这些包,则可忽略此消息&am…

Linux命令 wc(word count)-l(lines)用于统计文件中的行数。

文章目录 1、wc -l2、实战3、wc --help 1、wc -l 在命令 wc -l 中,-l 的英文全称是 lines。这个选项用于指定 wc(word count,单词计数)命令来统计文件的行数。 例如,当你运行 wc -l load_user_100w_sort.sql 时&…

操作系统之《PV操作》【知识点+详细解题过程】

1、并发进程 : 并发的实质是一个处理器在几个进程之间的多路复用,并发是对有限的物理资源强制行使多用户共享,消除计算机部件之间的互等现象,以提高系统资源利用率。 (1)并发进程——互斥性: 进…

【pytorch10】统计属性

常见统计属性 norm(范数)mean,sumprodmax,min,argmin,argmaxkthvalue,topk kthvalue求第几个的位置和第几个的值 topk求top几的这样的一个数值 norm范数 这里的norm表达的是范数的意思,norma…

GRS认证流程是什么?

GRS认证的认证流程主要包括以下几个步骤: 1. 提交申请 首先,企业需要向GRS认证机构提交认证申请,并提供相关的企业信息和产品信息。这通常包括企业的基本信息、生产工厂信息、产品范围、生产流程等。 2. 合同评审 认证机构会对企业提交的…

GEOS学习笔记(一)

下载编译GEOS 从Download and Build | GEOS (libgeos.org)下载geos-3.10.6.tar.bz2 使用cmake-3.14.0版本配置VS2015编译 按默认配置生成VS工程文件 编译后生成geos.dll,geos_c.dll 后面学习使用C接口进行编程

基于MATLAB对线阵天线进行道尔夫—切比雪夫加权

相控阵天线——基于MATLAB对线阵进行道尔夫—切比雪夫加权 目录 前言 一、阵列天线的综合 二、道尔夫—切比雪夫综合 三、单元间距的改变对切比雪夫阵列方向图的影响 四、单元数的改变对切比雪夫阵列激励分布的影响 五、副瓣电平SLL对切比雪夫阵列激励幅度的影响 六、副…

Logo开发示例

卡巴斯基的GReAT团队要求我们为他们版本的Ghidra(一种逆向工程软件)开发一个标志。任务是将开源版本中使用的九头蛇图像改编成印度神话中的三头蛇。我们为标志提出了各种选择,以绿色背景上风格化的红蛇为特色。选择的结果非常符合品牌&#x…

使用nvm命令进行node和npm版本下载以及切换

下载以及安装nvm方式 https://blog.csdn.net/ppz8823/article/details/130862191 1.查看nvm版本 nvm -v2.查看node 和 npm版本 node -v npm -v3.使用nvm查看已下载的node版本 nvm ls4.使用nvm 查看可使用的在线node版本 nvm list available4.下载想要使用的node版本&#x…

如何知道docker谁占用的显卡的显存?

文章目录 python环境安装nvidia-htop查看pid加一个追踪总结一下【找到容器创建时间】使用说明示例 再总结一下【用PID找到容器创建时间,从而找到谁创建的】使用说明示例 python环境安装nvidia-htop nvidia-htop是一个看详细的工具。 pip3 install nvidia-htop查看…

JAVA编程题期末题库【中】

8.计算邮资 程序代码: public static void main(String[] args) {// 计算邮资//if多分支语句//创建对象java.util.Scanner inputnew java.util.Scanner(System.in); //提示输入用户,输入邮件的重量System.out.println("邮件的重量:");int wei…

学习笔记——动态路由——OSPF(OSPF协议的工作原理)

八、OSPF协议的工作原理 1、原理概要 (1)相邻路由器之间周期性发送HELLO报文,以便建立和维护邻居关系 (2)建立邻居关系后,给邻居路由器发送数据库描述报文(DBD),也就是将自己链路状态数据库中的所有链路状态项目的摘要信息发送给邻居路由器…

【Python自动化测试】如何才能让用例自动运行完之后,生成一张直观可看易懂的测试报告呢?

小编使用的是unittest的一个扩展HTMLTestRunner 环境准备 使用之前,我们需要下载HTMLTestRunner.py文件 点击HTMLTestRunner后进入的是一个写满代码的网页,小编推荐操作:右键 --> 另存为,文件名称千万不要改 python3使用上述…

如何断点调试opencv源码

分几个步骤: 1、下载opencv-4.10.0-windows.exe https://opencv.org/releases/ 2、想要调试opencv的源码,只需要将这两个文件拷贝到我们自己项目的可执行文件的同级目录内即可。 完成拷贝后,直接在vs工程中打断点F11进行单步调试&#xff…

【漏洞复现】FastAdmin——任意文件读取漏洞

声明:本文档或演示材料仅供教育和教学目的使用,任何个人或组织使用本文档中的信息进行非法活动,均与本文档的作者或发布者无关。 文章目录 漏洞描述漏洞复现测试工具 漏洞描述 FastAdmin是一个免费开源的后台管理框架,其lang存在…

计算机网络 —— 网络字节序

网络字节序 1、网络字节序 (Network Byte Order)和本机转换 1、大端、小端字节序 “大端” 和” 小端” 表示多字节值的哪一端存储在该值的起始地址处;小端存储在起始地址处,即是小端字节序;大端存储在起始地址处,即是大端字节…

以创新赋能引领鸿蒙应用开发,凡泰极客亮相华为HDC2024

6月21日至23日,华为开发者大会2024在松山湖举行。大会现场,华为发布了HarmonyOS、盘古大模型等方面最新进展。国内外众多企业齐聚一堂,共迎新商机、共创新技术、共享新体验。 凡泰极客作为鸿蒙生态的重要战略合作伙伴,同时也是鸿…

【vue3|第14期】深入Vue3自定义Hooks:掌握组件逻辑复用的核心

日期:2024年6月26日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方&#xf…