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…

继承WebMvcConfigurationSupport后居然出现了Bug?

前言 今天在编写文件上传代码时对静态资源进行映射时遇到了一个Bug与各位看官进行分享,首先先复现一下Bug。 复现过程 文件上传类 /*** 文件的上传与下载*/ Slf4j RestController RequestMapping("/common") public class CommonController {Value(&q…

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…

5G EPS fallback

5G EPS Fallback语音方案流程总结-电子发烧友网 (elecfans.com) 5g信令流程详解_5G语音信令流程-CSDN博客 可以参考的文件: 【漫画】图解5G信令流程:08 EPSFallback.docx - 人人文库 (renrendoc.com)

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 时&…

如何在Android应用中最佳实现“Edge to Edge“特性?

Edge to Edge"特性 要在Android应用中最佳实现"Edge to Edge"特性,可以按照以下步骤进行操作: 1. 设置目标版本:将应用的目标版本设置为Android Q或更高版本。在build.gradle文件中,将targetSdkVersion设置为Q。 2. 设置主题样式:在styles.xml文件中,创…

操作系统之《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…

vue2+TS,el-table表格单选的写法

1.打开表格 //父组件引入 <customerChoose ref"customerChooseRef" onSure"setOrderInfoFn"></customerChoose>//子传父&#xff0c;接收值&#xff0c;操作private async setOrderInfoFn(data) {this.form.customerId data.idthis.form.cu…

kubekey 离线安装高可用 kubernetes 集群

1. 准备环境 版本&#xff1a; kubernetes: v1.29.2 kubesphere: v3.4.1 kubekey: v3.1.1 说明&#xff1a; kubekey 只用于安装 kubernetes&#xff0c;因为 kubesphere 的配置在安装时经常需要变动&#xff0c;用 ks-installer 的 yaml 文件更好管理&#xff1b;ks-installe…

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

文章目录 python环境安装nvidia-htop查看pid加一个追踪总结一下【找到容器创建时间】使用说明示例 再总结一下【用PID找到容器创建时间&#xff0c;从而找到谁创建的】使用说明示例 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); //提示输入用户&#xff0c;输入邮件的重量System.out.println("邮件的重量&#xff1a;");int wei…

PX2资料及问题记录

PX2的一些资料 官方论坛&#xff1a;https://devtalk.nvidia.com/default/board/182/drive-px2/ 官方网站&#xff1a;https://www.nvidia.com/en-us/self-driving-cars/ap2x/ 开发网站&#xff1a;https://developer.nvidia.com/drive/downloads docker docker run --devic…

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

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