玖叶教程网

前端编程开发入门

android程序热更新(热修复)方案介绍和实现分享!

下面给android程序员的介绍android热更新方案,热更新的提出源于产品需要快速迭带而又不能经常提示用户更新影响用户体验而出来的一种在不用更新应用的情况下修复bug的解决方案。从方案上来说,主要有Dexposed、AndFix、ClassLoader三种。前两个都是阿里巴巴内部的不同团队给出的解决方案(淘宝和支付宝),后者则来自腾讯的QQ空间团队给出的方案。

安卓手机系统

Dexposed

Xposed需要获取Root权限,因为它要修改其他应用、系统的行为,而对普通APP来说,不需要root权限。 Xposed通过修改Android Dalvik运行时的Zygote进程,并使用Xposed Bridge来hook方法并注入自己的代码,实现非侵入式的runtime运行。

不支持art,不支持art,不支持art。

APP

AndFix

通过hook方法的方式,AndFix不像Dexposed从Method入手,而是以Field为切入点,阿里出品。

ClassLoader

多个dex的解决方案,把多个dex放进app的classloader之中,从而使得所有dex的类都能被找到。而实际上findClass的过程中,如果出现了重复的类,是会使用第一个找到的类的。

classloader方案就是从这一点出发,只要把需要修复的类修复后,打包到一个单独的dex,通过反射插入到dexElements数组的最前面,让虚拟机加载打完补丁的class。

总结

建议采用ClassLoader方案,因为兼容性比较稳定性。而需要应用不重启就能修复问题的场景,可以使用AndFix。Dexposed由于还不能支持art,现阶段暂时先放弃,如果开发者们改进使它能支持art模式,那么还是很有吸引力的。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言