前言
- 插件化和热修复不是同一个概念,两者出发点不同
- 从技术角度来讲,都是从系统加载器角度着手,无论采用hook,代理或其他底层实现,都是"欺骗"Android系统让宿主加载或运行插件(补丁)的内容
- 插件化:目的是把需要实现的模块或功能当做一个独立的提取出来,减少宿主的规模,当需要使用到相应的功能时再去加载相应的模块
- 热修复:往往是从修复bug的角度出发,强调的是在不需要二次安装应用的前提下修复已知的bug(涉及关键词:Hook技术、动态代理等)
目前主流热修复框架(热更新一般来说也是指热修复)
- 阿里 AndFix
- 阿里 Sophix (收费)
- 微信 Tinker
- 饿了么 Amigo (易用性)
- 美团 Robust
插件化方案 (涉及动态代理,ClassLoader,以及另一个apk资源的加载)
- 360的DroidPlugin (推荐)
- Small
- DynamicAPK(携程)
除了上面的2个概念,还有个增量更新的技术
- APK增量更新是很多大厂APP采用的技术
- bsdiff库生成补丁文件方式下载跟旧版本APK合成生成新版APK的原理(ligbspatch.so)
参考链接: