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

news2024/11/16 3:18:28

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.coloradmin.cn/o/1861001.html

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

相关文章

Calibre - 合并电子书(EpubMerge)

这里使用 Calibre 软件和 EpubMerge 插件 EpubMerge github : https://github.com/JimmXinu/EpubMerge 1、安装 Merge 插件 安装后需要重启 calibre 2、查看设置 4 3、选中文件、开始合并 合并完成后,会弹窗窗口,来编辑 合辑的元信息 完成…

学习记录697@数据通信基础之异步通信和同步通信

最近在看计算机网络物理层部分,涉及到异步通信和同步通信,这个和通信知识相关。 异步通信和同步通信都是为了解决时钟同步问题,这个和编程中的同步和异步是不一样的概念。 时钟同步 我的理解是,发送者发送一系列信号&#xff0…

Vue3 和 ECharts 创建交互式雷达图

本文由ScriptEcho平台提供技术支持 项目地址:传送门 Vue.js 中使用 ECharts 创建雷达图 应用场景 雷达图是一种多维数据可视化图表,常用于比较不同指标之间的关系和变化趋势。在 Vue.js 项目中,我们可以使用 ECharts 库轻松创建雷达图。 …

CPR曲面重建代码

废话不说,直接上代码: #include "vtkAutoInit.h" #include "vtkPolyData.h" #include "vtkProbeFilter.h" #include "vtkParametricFunctionSource.h" #include "vtkParametricSpline.h" #include &…

jenkins api部署时,一直提示pending-Finished waiting

问题: 调用jenkins api部署时,一直提示pending-Finished waiting 解决方案: 这个问题困扰了很久,一直没有思路,后面看到调用jenkinsAPI本身会出现一段提示,pending in the quiet period,通过搜…

智慧仓储的秘密武器:数据可视化的应用

智慧仓储中数据可视化是如何应用的?在现代物流和供应链管理中,智慧仓储已成为企业提升效率、降低成本和优化运营的重要手段。而数据可视化作为智慧仓储的重要工具,通过将复杂的数据转化为直观、易理解的图表和图形,极大地提升了仓…

js实现blockly后台解释器,可以单步执行,可以调用c/c++函数

实现原理 解析blockly语法树,使用js管理状态,实际使用lua执行,c/c++函数调用使用lua调用c/c++函数的能力 可以单行执行 已实现if功能 TODO for循环功能 函数功能 单步执行效果图 直接执行效果图 源代码 //0 暂停 1 单步执行 2 断点 //创建枚举 var AstStatus = {PAUS…

5、双足机器人mpc动力学模型

为计算机器人的当前实际状态x,需要建立双足质心动力学模型。 速度模型由控制输入变量推导速度公式: x向速度νx :当前机器人x方向的前进速度,初始值由速度传感器实时测量得到。y向速度νy :机器人y方向的平移速度。z向速度νz :垂直方向的速度,对于双足机器人行走时为0:…

吉利前端、AI面试

诸葛耘墒的在线视频面试 1、小程序端AI视频面试 虚拟人面试官提问 视频口述回答 1、最近的两份工作经历,以及上一份离职原因2、在过往的工作或生活中,需要学习掌握一项与工作有关的技能或兴趣爱好时,你会运用哪些方法和诀窍,投入…

项目实训-vue(十二)

项目实训-vue(十二) 文章目录 项目实训-vue(十二)1.概述2.处理进度可视化 1.概述 本篇博客将记录我在图片上传页面中的工作。 2.处理进度可视化 除了导航栏之外,我们还需要对上传图片以及图片处理的过程以及流程进行…

职业技能大赛引领下大数据专业实训教学的改革研究

随着信息化时代的加速发展,大数据专业作为新兴的热门领域,正日益成为高等职业教育体系中不可或缺的一部分,其承担着为社会培养大批具有高素质应用技能的大数据技术人才的重任。职业技能大赛作为检验和提升学生技能水平的有效平台,…

数据库中的事务、undo log、redo log、binlog都是干啥的?

文章目录 关于事务ACID 特性undo logredo logredo log 的写入过程事务的执行过程binlog细节总结 数据迁移数据备份工具innodb_autoinc_lock_mode 关于事务 事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功&#xff0…

基于PHP+MySQL组合开发的在线客服小程序源码系统 带完整的安装代码包以及搭建教程

系统概述 源码系统是专门为满足企业在线客服需求而设计的,它集成了多种功能,能够帮助企业实现与用户的实时沟通、问题解答、信息反馈等。通过该系统,企业可以更好地了解用户需求,提升用户体验,增强用户对企业的信任感…

Clark 克拉克变换与克拉克逆变换

一、无刷电机控制原理 如上图所示,通过多个mos管的捷联去控制电机运动,即在电机的ABC三相中都会形成相应的电流变化,每相相差120。 二、Clark变换 但如果通过上面这种改变电流波形的方式去控制电机会变得非常复杂,则Clark变换是…

牛了,LSTM+Transformer王炸结合创新,荣登Nature,精度高达95.65%

【LSTM结合Transformer】的研究方向探索了如何利用Transformer模型处理序列数据的能力以及LSTM在捕捉时间序列依赖性方面的优势。这一方向的意义在于通过融合两种模型的特点,提高了对复杂时空数据的预测准确性,尤其是在智能电网攻击检测、多变量时间序列…

2024三掌柜赠书活动第二十五期:Rust 游戏开发实战

目录 目录 前言 Rust语言概念 关于《Rust 游戏开发实战》 Rust系统编程的核心点 Rust开发的关键技术和工具 内容简介 作者简介 书中前言/序言 内容介绍 《Rust 游戏开发实战》全书速览 图书目录 结束语 前言 技术圈最近的编程语言新秀当属Rust莫属,Rus…

如何与ISSI建立EDI连接?

ISSI是一家总部位于美国的半导体公司,主要设计和销售高性能集成电路 (IC),其产品包括DRAM、SRAM、闪存和模拟电路,广泛应用于汽车、通信、工业和医疗等领域。 和其他半导体行业的企业一样,ISSI通过EDI与其全球合作伙伴传输业务单据…

经典神经网络(12)Transformer代码详解及其在Multi30k数据集上的训练

经典神经网络(12)Transformer代码详解及其在Multi30k数据集上的训练 论文链接:https://arxiv.org/pdf/1706.03762v2 原理可以参考:Self-Attention和Transformer 网络架构图如下: 1 Transformer编码器模块 1.1 Embedding位置编码 在实际…

游戏AI的创造思路-技术基础-机器学习(1)

大坑从此开始~~~~ 目录 1. 定义 2.发展历程和典型事件 2.1. 发展历程 2.2. 典型事件 3. 学习类型 3.1. 监督学习 3.2. 无监督学习 3.3. 半监督学习 3.3.1.定义与基本思想 3.3.2. 发展历程与应用场景 3.3.3. 核心算法与优势 3.3.4. 实际应用案例 3.4. 游戏AI的半监…

高校新生如何选择最优手机流量卡?

一年一度的高考已经结束了,愿广大学子金榜题名,家长们都给孩子准备好了手机,那么手机流量卡应该如何选择呢? 高校新生在选择手机流量卡时,需要综合考量流量套餐、费用、网络覆盖、售后服务等多方面因素,以下…