Android热修复

ClassLoader

  1. 禁止dex优化为class打上CLASS_PREVERIFIED标识
    方式一
    第一步:新建辅助类并单独生成一个dex,用于被其他类引用
    第二步:使用javaasist在其他类的构造方法添加对辅助类的引用
    第三步:在加载apk时,优先加载辅助类dex
    缺点:需要在编译期间为所有的类的构造方法插入对辅助类的引用,存在性能问题

    方式二
    代理dvmresolveclass方法,修改参数fromUnverifiedConstant为true,逃过校验。
    目前还没与跑通。

  2. bug修复后生成差异包

  3. 将差异包添加到DexList前面

生成差分包

jar cvf 目标文件 源文件
dx  --dex --output apk文件 源jar包 

关于http://blog.csdn.net/aerfahaidao/article/details/50217521这个博客中所说的生成补丁包的方法,亲测是不可行的。示例中替换一个Activity类是可以的,但是替换一个普通的工具类,还是会出现异常java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值