Android热修复学习(三)

本来准备在后续的文章中,陆续写下自己对现有的热修复框架(主要为Qzone团队方案和阿里的AndFix)原理的理解,以方便自己日后查看,不过今天看到新的文章微信Android热补丁实践演进之路,感觉微信团队的技术真是强大,研究的很深入透彻,对之前的方案又有了新的认识。下面只是简要的记下自己的一些认知吧。

  • QZone方案
    QQ空间团队的方案github上有很多扩展的项目,不过大致原理应该是类似的。在(二)中我们看到multidex是利用了DexPathList的Element[],通过反射在把映射了其它dex的Element和之前的数组合并到新的数组,然后反射设置回DexPathList,从而达到动态加载多个dex的目的。

而QQ空间团队不光是改变了Element[]的大小,而且还把后来增加的插入到数组的最前面,这样就会先加载后来增加的dex。如果增加的Element里面有之前Element包含的类,则会替换掉之前Element里相同的类,因为的DexPathList的findClass()方法在前面的Element成功加载类后,就直接返回了,后面的Element根本没机会去加载这个类,这个在(一)中有讲过。

这个原理很简单,但是实践中总会出现很多没有预期的问题。apk安装的时候apk中的classes.dex会被虚拟机(dexopt)
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值