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':

最后,在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
网友评论