Tinker目前是热修复最火热的方案!关于Tinker的各种背景信息和介绍,请参考官网文档:
Tinker官网介绍
1 接入
首先,在project下的build.gradle下添加tinker插件,如图:
其次,在app中的bulid.gradle的dependencies中添加tinker SDK的依赖,如图:
注意,若使用 annotation 自动生成 Application, 需要单独引入 Tinker 的 tinker-android-anno 库。除此之外,我们无需再单独引入 tinker 的其他库。一般来说,我们都有自定义的application,所以这个可以不用加.
2配置
首先,我们还需要给tinker本身写添加配置,这个配置既可以写在app下的build.gradle中,也可以自己写一个tinkerpatch.gradle,为了项目本身结构清晰化,我们选择第二种方式,tinkerpatch.gradle的文件位置放在app目录下,并且项目的签名文件也放在app,便于后面做签名配置,代码如下:
其次,在app的build.gradle中添加apply from: 'tinkerpatch.gradle':
![图片.png](http://upload-images.jianshu.io/upload_images/927828-401500daeb15047a.png?imageMogr2
/auto-orient/strip%7CimageView2/2/w/1240)
最后,在app的bulid.gradle中添加tinker的签名配置:
3 application配置,初始化tinker
tinker的官方文档中,说了关于application的集成,什么自动不自动,说实在的,搞的我非常的懵逼!!!一般来说,tinker的集成都是后期,此时我们早已经有了自定义的application,所以,我们按自定义的方式来就好!
4 测试
补丁发布我们就用TinkerPatch平台,内含发布教程,将你创建的appKey配置到tinkerpatch.gradle中.
1在app启动后,MainActivity中打印一句话:
签名打包安装,运行后如图:
你会惊奇的发现app中build目录下,多了个bakApk文件包,
app-1.0.0-0706-12-42-45这个文件夹并非空穴,她的命名有理可推的,其中1.0.0就是tinkerpatch.gradle中,appVersion的值,而0706-12-42-45为7月6日12点42分45秒,按时间生成的.而目录下的app-release.apk就是正规的签名包了,这个也是基础包,可以直接发布使用.
注意,此处高能预警:
如果你发布的这个版本有bug需要修改,我们就需要这个基础包信息,但bulid的内容会根据编译随时自动清空,当你在修改这个bug的时候,需要在tinkerpatch.gradle中的baseInfo配置这个基础包,最后编译的时候build下没有app-1.0.0-0706-12-42-45这个文件,就会报错!!!而且是必须为真,不能随意替换改个名字敷衍,因为要和基础包对比改了什么.废话说了这么多,一句话总结:如果你正式版发布的这个,你就需要备份!!!!备份!!!备份!!!,打补丁的时候再cp进去.
好了,现在我们改变toast的内容,
然后点击AS编辑器右上角的gradle,双击tinkerPatchRelease:
如果签名信息不成功,会报如下错误:
如果基础包配置信息错误,也会报错:
如果什么错都没有,则会如图生成一个补丁包:
发布成功后,多次启动app后会发现toast的内容已经改变:
TinkerPatch后台的信息也显示,下载成功且更新成功
好了,至此集成完成,项目源码!
如果喜欢,请给个赞,谢谢!
更多问题加群:584275290