1 接入
首先,在project下的build.gradle下添加tinker插件,如图:
图片.png其次,在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,便于后面做签名配置,代码如下:
Tinker SDK.png图片.png tinkerpatch.gradle你可以直接后copy到你的项目中,然后按照注释更改信息就好.
其次,在app的build.gradle中添加apply from: 'tinkerpatch.gradle':
图片.png3 application配置,初始化tinker
tinker的官方文档中,说了关于application的集成,什么自动不自动,说实在的,搞的我非常的懵逼!!!一般来说,tinker的集成都是后期,此时我们早已经有了自定义的application,所以,我们按自定义的方式来就好!
图片.png FetchPatchHandler是每隔一段时间就去访问平台,看看是否有新的补丁发布,代码为,可点击图片.png
4 测试
图片.png1在app启动后,MainActivity中打印一句话:
图片.png
签名打包安装,运行后如图:
图片.png你会惊奇的发现app中build目录下,多了个bakApk文件包,
图片.pngapp-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的内容,
图片.png然后点击AS编辑器右上角的gradle,双击tinkerPatchRelease:
图片.png如果签名信息不成功,会报如下错误:
图片.png
如果基础包配置信息错误,也会报错:
图片.png如果什么错都没有,则会如图生成一个补丁包:
图片.png ,这个就是发布到平台的补丁包.,发布成功后,多次启动app后会发现toast的内容已经改变: 图片.png
TinkerPatch后台的信息也显示,下载成功且更新成功
图片.png
更多问题加群:584275290