组件化,插件化和热更新
什么是组件化:
- 为什么要有组件化?
加入一个app工程只有一个组件,随着app业务的壮大模块越来越多,代码量超10万是很正常的,这个时候我们会遇到以下问题:
- 稍微改动一个模块的一点代码都要编译整个工程,耗时耗力
- 公共资源、业务、模块混在一起耦合度太高
- 不方便测试
这样的好处:
* 每个模块可以独立开发编译运行
* 开发单个模块时可以共享资源和工具类
* 可以针对单个模块测试
参考文章链接:[http://blog.csdn.net/guiying712/article/details/55213884 ]
github链接:[https://github.com/llayjun/ModuleProgramming ]
什么是插件化
- 为什么有插件化?
有了组件化,为什么还要用插件化呢?插件化开发总的来说有以下几点好处(不同插件框架不一样):
- 宿主和插件分开编译
- 并发开发
- 动态更新插件
- 按需下载模块
- 方法数或变量数爆棚
主要有这几种插件化模式值得研究
1. 滴滴/VirtualAPK
2. 奇虎360/RePlugin/DroidPlugin
github链接:以DroidPlugin为例[https://github.com/llayjun/PlugProgramming ]
什么是热更新
在用户使用App的时候,不知不觉,这个Bug就被修复了。
主要有这几种热更新值得研究
1. 阿里的Sophix,暂时处于内侧阶段,后期不知道要不要收费
2. 微信的Tinker
博客链接:以Tinker为例:[http://www.jianshu.com/p/b7b7cf40f700 ]
github链接:以Tinker为例:[https://github.com/llayjun/MyTinkerDemo ]
自我理解:
①组件化:
1. 用于项目过大,每次编译时间长
2. 用于团队多个人分工开发不同的模块
②插件化:
3. 用于版本新添加功能
4. 解决方法数超过65536问题
5. 按照需要下载模块,减小项目apk的大小
③热更新:
6. 用于修复已经上线的bug等问题
7. 一般不用于新功能的版本上线