ClassPatch
Introduction: 实现热补丁,不影响性能,支持 dalvik 和 art。动
Tags:
热部署-热修复-动态部署-第一、原理介绍
相关原理请参考:http://blog.csdn.net/xwl198937/article/details/49801975
第二、生成 patch apk
1、将改动的 java 文件编译生成 class 文件。
2、将所有的 class 文件放进/ClassPatch/classes/目录下面,
3、执行 sample 生成 classes.dex 文件在/ClassPatch/classes/
4、随便找一个 apk,重命名为.zip 文件,将刚刚生成的 clases.dex 文件放进去,在重命名为.apk
5、将 apk 放进 data/data/app-packageName/patch 目录下。(具体参考 sample 中的复制按钮选项)
6、重启 app 后,patch 才能生效
或者你使用 tool 目录下面的工具生成 patch apk(这个是阿里巴巴 andfix 开源中的 patch 生成器)(这个还是有点问题)之后我会自己弄一个出来。包括资源,混淆,dex 等等
第三、说明
1、由于现在还在完善中,后期考虑加入 patch 实时生效的能力,还有替换布局的能力。具体参考我的另一个博客:http://blog.csdn.net/xwl198937/article/details/50134861
2、目录下面的 patch 是已经生成的 patch apk,可以直接用,将其放进 sdcard 中,并重命名为 ClassPatch
3、so hook 是正在研究的项目,有兴趣的可以一起讨论一下。sample 中 so 替换功能是不能实现的。
4、现在已经基本实现 dalvik 系统中 patch 实时生效的能力。原理是在 proxyDvmResolveClass 增加标识,不选择从 dvmDexGetResolvedClass 获取 class。
5、实现 so hook 功能,现在已经实现了
