1.dynamic-load-apk
作者 百度任玉刚 插件化框架 途牛已上线使用
支持代码 资源文件以插件形式加入到host。
缺陷:
- 不支持Service和BroadcastReceiver。
- 迁移成本,需要修改插件,插件app需要继承自proxyActivity
优点:
- 插件无需安装host即可吊起
- 支持R访问插件资源
- 插件支持Activity和FragmentActivity
- 基本无反射调用
- 插件安装后任可独立运行
2.Droid Plugin
作者 奇虎360张勇 360手机助手已上线使用
可实现几近无规则吊起
缺陷:
- 无法使用自定义资源的通知
- 无法注册一些特殊Intent Filter的组件(四大组件)
- 对Native支持不好
优点:
- 插件无需任何修改,可独立安装运行,也可以做插件运行
- 四大组件无需在Host程序注册
- 超强隔离性,不同插件运行在不同的进程中
- 资源完全隔离 5.实现进程管理,插件的空进程会被及时回收,占用内存低
- 插件的静态广播会被当作动态处理,如果插件没有运行,静态广播永远不会触发
- API侵入性低
3.DynamicAPK
作者 携程移动团队 携程旅行已上线使用
基于多dex/apk加载的解决方案
优点:
- 迁移成本低(无需做任何activity/fragment/resource的proxy实现)不使用代理来管理插件的activity/fragment的生命周期。修改后aapt会处理插件种的资源,R.java中的资源引用和普通Android工程没有区别,开发者可以保持原有的开发规范
- 更加有利于并发开发
- 提升编译速度
- 提升启动速度。dex解压、dexopt、加载耗时较长,使用按需加载启动时间过长
- 适合HotFix(代码和资源)
- 按需下载和加载任意功能模块(包含代码和资源)
4.Nuwa
修改ClassLoader加载顺序并修改CLASS_ISPREVERIFIED达到热修复效果
优点:
- 自动化热修复
- 热修复所有优点
5.AndFix
作者 阿里巴巴移动团队 阿里旗下多款app已上线使用
原理 在Native层使用指针替换的方式替换bug方法,已达到修复bug的目的
对该框架了解不多,建议参考Coolspan Alibaba-AndFix Bug热修复框架原理及源码解析和 Air bolg的三篇AndFix解析进行深入了解。
这方面的框架还有很多,列举了几个比较优秀的供小伙伴们参考;由于作者水平有限,深入理解请根据源码和作者文档了解学习。