Rubik:基于 Kotlin 的 Android 组件化开发框架开源!
前言
关于Rubik
关于组件化
- 隔离:让业务组件之间保持相对的独立性
- 复用:复用业务组件形成可运行软件
怎样才算彻底的组件隔离?
- 明确开发人员的职责:由于对一个模块的修改不会直接影响另一个模块,所以负责开发不同模块的开发人员,只需要对约定好的接口负责,不需要关心其他组件的具体实现。
- 降低测试成本:同样的,对于测试人员而言,如果能够保证对一个组件的修改,只影响组件本身和组件的接口,那么对于没有被修改过的组件,就没有回归测试的必要了。
- 提升编译速度:在实际开发中,可以让大部分组件提前编译成二进制,只让少数经常变更的组件保持源码状态。
- 故障隔离:当一个组件出现故障,能够做到不影响其他组件的正常运行。
组件级别的复用应该做到什么程度?
Rubik在组件化中的作用?
Rubik Router:基于Kotlin DSL的“函数”路由
- 灵活性:在实际开发中,组件的边界通常不是简单的页面跳转,有可能是Api的调用或数据、实例的获取,相比于传统的页面路由,“函数”路由可以更加轻量级的满足这些需求。
- 可扩展性:“函数”路由有更低的层次,使用者可以在函数的基础上延伸更多的用法。
- 一致性:对于路由调用者而言,路由的终点无论是函数、页面还是数据,Rubik Router都提供一致的调用方式。
@RRoute(path = "user") fun getUser(id : Int, name : String) : User? { … }
用元注解把函数注册到路由
navigate { uri = "app://com.account/user" query { "id" with 400 "name" with "zhangsan01" } result<User?> { user -> // 通过泛型指定接收数据类型 … } }
通过Kotlin DSL调用其他组件提供的接口
Rubik Plugins:基于Gradle Plugin的组件管理和依赖管理工具
- rubik:
- 提供全局定义组件的能力,并根据全局定义自动启用rubik-context、rubik-root等插件
rubik插件工程结构
rubik { component { uri "app://com.cloud-file" // uri 是组件的唯一 id,和路由根路径 dependencies { // 组件所依赖的其他组件uri uri ("app://com.local-file" ) uri ("app://com.upload" ) } source { // 定义的多种来源 project (":lib-cloud-file") maven { // 其他组件依赖自己的默认版本 version "0.2.0" variant "english-debug" } } } component { … } // 继续定义下一个组件 }
组件的定义方式
-
- rubik-root:
- 给App工程提供筛选组件能力,根据flavor、版本号筛选要打包进apk的业务组件
- 提供组件的源码工程和aar切换的能力
-
rubik { packing { uri ("app://com.cloud-*") { // 筛选范围,uri表示用uri筛选,支持*匹配任意字符 projcetMode () // 筛选方式, projcetMode通过工程筛选一些组件 } uri ("app://com.preview-file") { mavenMode { // 筛选方式, mavenMode通过maven依赖aar筛选一些组件 version "0.2.0" variant "netdisk-english-debug" } } …… } }
筛选组件的方式
- rubik-context:
- 提供把业务代码按flavor、版本号编译成aar 并发布到maven的能力
- 提供辅助函数路由,把中间代码打包成context.jar ,并按版本号发布到maven的能力,并根据全局定义,为组件自动添加其他组件的中间代码依赖
-
- rubik-test:
- 给工程提供单元测试环境
-
最后

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Node.js 存在操作系统命令注入漏洞
漏洞描述 Node.js 是一个开源、跨平台的 JavaScript 运行时环境。 由于 CVE-2022-32212 修复不完全,Node.js 的受影响版本中仍存在操作系统命令注入漏洞。漏洞源于发出允许重新绑定攻击的 DBS 请求之前,IsIPAddress 没有正确检查 IP 地址是否无效,导致 Node.js 的 rebinding 保护器允许无效的 IP 地址(如:八进制格式)。攻击者可利用此漏洞通过恶意构造八位字节的无效 IP 如(1.09.0.0)绑定到 --inspect 会话中,在浏览器通过 DNS 解析此无效的八进制地址时进行 DNS 重新绑定,并远程执行恶意代码。 漏洞名称 Node.js 存在操作系统命令注入漏洞 漏洞类型 命令注入 发现时间 2022-12-06 漏洞影响广度 广 MPS编号 MPS-2022-60662 CVE编号 CVE-2022-43548 CNVD编号 - 影响范围 nodejs@[18.0.0, 18.12.1) nodejs@[16.0., 16.18.1) nodejs@[19.0.0, 19.0.1) nodejs@[14.0....
- 下一篇
Bee Sharding 增加流式查询,分页查询内存优化,降低内存消耗 (V2.0.0.1207)
新增流式查询,分页查询内存优化;Bee Sharding V2.0, 增加分库分表的分片功能;分片就是如此简单,增加一行配置即可; Bee 经过 10 几个版本的迭代,ORM 的基本功能已趋于成熟稳定;现在增加 Sharding 功能,方便伙伴们提升分库分表的功能。 在 ORM 实现分片功能,更加简单,合理。 新增功能列表: V2.0.0.1207 (2022・怀念版) 新增流式查询,分页查询内存优化,降低内存消耗 Sharding 分片功能 1) 面向对象分片 2) Suid,SuidRich, 查询,更新分片 3) MoreTable 多表查询分片 4) 批量插入分片 5) MAX,MIN,COUNT,SUM,AVG 分片查询分片 6) 分页 / 排序分片 7) 分片种类支持:分库分表,仅分库,仅分表 8) 分片路由种类支持:一库一表,一库多表,多库多表,全库全表,只指定表,只指定库 9) 通过 Hint 强制指定当次操作的分片路由 (指定 ds 和 table) 10) 分片的广播表 11) Sharding 分片配置支持 参考示例 //1.分片配置 ShardingConfi...
相关文章
文章评论
共有0条评论来说两句吧...