现在热修复已经很热门了,比较著名的有阿里巴巴的AndFix、Dexposed,腾讯QQ空间的超级补丁和微信最近开源的Tinker。
Tinker是一个android的热修复库,在不重新安装apk的情况就可以更新dex,library和resource。Tinker区别于AndFix和QQ空间超级补丁采用了更好的dexdiff算法。想要了解详细介绍参考下面微信负责人张绍文的博客链接。
演示apk资源(里面有详细的使用说明):
http://download.csdn.net/detail/danfengw/9658062
Tinker GitHub:https://github.com/Tencent/tinker
配置参考博客:
http://blog.csdn.net/xiejc01/article/details/52735920
微信 Tinker 负责人张绍文关于 Android 热修复直播分享记录
想要快速学习Tinker的使用,可以只查看Tinker GitHub和配置参考博客。这里我也会具体写一下配置步骤还有自己遇到的问题。Tinker在github上的接入指南(wiki)看起来确实有点难的啊,搞了半天都没搞明白为什么有两个Application,有明白了的给留个言啊。先不管这个问题了,说下具体配置。
1、配置build.gradle
参考官方的build.gradle配置自己的build.gradle,顺序可以不按照官方的https://github.com/Tencent/tinker/blob/master/tinker-sample-android/app/build.gradle,注意compileSdkVersion跟v7最好都不要使用24的
这里添加javaVersion最好不要改成VERSION_1_8,改成8可能需要添加其他的支持。sigingConfig里面的debug的配置可以注释掉,否则会报关于debug找不到的错。
设置defaultConfig的时候注意不要重复设置,我之前因为配置的时候没有注意多配置了该项,后来打差分包的时候总是失败,所以,build.gradle的配置还是很重要的。
buildtype里面跟debug相关的代码也注释掉。
dependencies配置的时候使用了’com.tencent.tinker:tinker-android-anno:1.7.0’和’com.tencent.tinker:tinker-android-lib:1.7.0’注意还有一个支持多dex的multidex”com.android.support:multidex:1.0.1”,正是因为使用了multidex,才有了/Tinker-自定义扩展中介绍的第二条2、Application的attachBaseContext方法实现要单独移动到onBaseContextAttached中,这里可以不理解我在说啥可