github地址

https://github.com/Tencent/tinker/wiki

https://github.com/Tencent/tinker/wiki/Tinker-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97

在官方文档中有了很详细的使用介绍,还有热修复对比。

gradle 配置文件 TINKER_ID 是获取 git 的版本号,可以换成 versionName 等,TINKER_ID 要注意保持一致,不然会失败。

build apk,成功后在项目路径 app\build\bakApk 里会有 apk 生成。

然后修改代码,修改好之后在 As 的 terminal 终端使用命令行 gradlew tinkerPatchDebug。

  

这个时候在你项目的目录里会生成新的 apk,app\build\outputs\tinkerPatch\debug\

这个就是补丁包,把这个 apk 放到手机根目录就行了。

 

点开你的 app,点击 load patch,你会看到一个打印出 patch success, please restart process 的 toast,这个时候锁屏,然后点亮屏幕,发现ok了;

或者重启 app,然后点击SHOW INFO 可以查看到详细的信息显示补丁包已经加载成功了。

 

/**

* 微信针对QQ空间超级补丁技术的不足提供 DEX 差量包,整体替换 DEX 的方案;

* 主要的原理是与QQ空间超级补丁技术基本相同,整体替换掉旧的 DEX,达到修复的目的。

**/

SampleApplication 是 gradle 自动生成的,继承自 TinkerApplication ,然后设置捕捉代码异常,onBaseContextAttached 就是我们要找的关键代码。

 

反射调用 TinkerLoader 的 tryLoad() 方法拿到加载补丁结果,加载补丁包,反射调用同步周期,重置安全模式次数,大于等于三次会进入安全模式不再加载。

 

posted on 2017-01-03 16:18  翻滚的咸鱼  阅读(1093)  评论(0编辑  收藏  举报