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 -
  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值