@zongwu
2016-12-26T05:52:40.000000Z
字数 802
阅读 356
开发设计
这是在不使用黑科技
的方案情况下,将产品组件化。其所花费的成本远小于(约1/50的成本)各种使用DexClassLoader
、Hook
的插件化框架。
诚然,插件化
和组件化
是两个层面的东西,但因地制宜此刻我们需要组件化
。我们只解决拆分业务提供产品货架的商品,不解决插件化(动态更新插件)。
拆分业务module
后,对整个项目的build的时间会增加,但针对单个module
的编译时间会减小,选择性的编译module
可以减少不必要的完整功能编译次数。
1、解决团队协作时,因为依赖其他模块而造成的闲置
2、解决因频发的安装测试(每次build约3~5min),一天大约有30min时间可以用于喝咖啡的现状
3、缓解因独立业务耦合,带给测试团队功能测试的压力(附带帮产品货架积累商品)
module
不再只是lib
包,module
可以单独编译成apk并被执行domain
不再pubic
,而是module
范围内可见module
是自闭合的生态,原则上不依赖外部(如果真的需要外部触发源,请打桩)module
的拆分粒度的决策 2016/12/26 需补充拆分业务的粒度思维导图,确定有哪些业务
产品货架
思想RPC
定义接口远程调用 UI Component Module
,向外部提供UI组件资源,即换肤/主题功能(可选)Dagger2
Scope使用到极致DataBinding
拆分后并重构会引起的大量XML的修正,还有library
生成的是abstract类的问题