您的位置:首页 > 移动开发 > Android开发

Android热修复

2016-07-14 16:08 453 查看

ClassLoader

禁止dex优化为class打上CLASS_PREVERIFIED标识

方式一

第一步:新建辅助类并单独生成一个dex,用于被其他类引用

第二步:使用javaasist在其他类的构造方法添加对辅助类的引用

第三步:在加载apk时,优先加载辅助类dex

缺点:需要在编译期间为所有的类的构造方法插入对辅助类的引用,存在性能问题

方式二

代理dvmresolveclass方法,修改参数fromUnverifiedConstant为true,逃过校验。

目前还没与跑通。

bug修复后生成差异包

将差异包添加到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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android classloader