在我们开始热修复之旅之前,大家需要先明白的是这篇文章是基于TinkerPatch的,而不是微信的Tinker,虽然TinkerPatch是基于Tinker的项目,但他们终归是两码事。先附上Tinkerpatch的官网地址。
1.集成TinkerPathSDK:
- 登录官网,获取Appkey值;
- 在项目,注意不是model的Gradle添加仓库jcenter的依赖:
buildscript { repositories { jcenter() } dependencies { classpath ("com.tinkerpatch.sdk:tinkerpatch-gradle-plugin:${TINKERPATCH_VERSION}") { changing = true } }
3.在Module层的Gradle添加依赖:
然后需要更改一下内容,后面再细说;
5.然后再自己的Application类,他与微信的Tinker区别就是你不用自己去安装微信的要求重新定义Application比较简单,然后写上相应的代码:
注意写到这里,如果你没有仔细阅读他们的文档,会遇到一个大坑。待会再细说。
6.配置签名
基本到这就集成完成了。
2.打包:基础包以及补丁包
1.找到项目的Gradle视图,找到build一层,双击打包,此包为基础包,也就是你假装有bug的包,你可以自己先做个标记,代表这是有问题的基础包。我这里是以Debug版本为例的。
此时就会在下图生成打包好的基础包,app后面的则是你当时打包成功后生成的时间戳,这个后面会用到。
2. 然后再来修改tinkerpatch.gradle中的 baseInfo代码,将你刚打好包的时间戳填入代码中
def bakPath = file("${buildDir}/bakApk/") def baseInfo = "app-1.0.8-1110-17-18-39" def variantName = "release"3. 再修改 appVersion ,记住与你Module中的build.gradle 中的versionName 一致。然后再修改一下代码,将之前基础包上的bug修复好。
appVersion = ""
4. 打补丁包。还是在这个视图,选中tinker目录下的圈圈部分,双击666。静待打包完成
大概半分钟后,打好的补丁包则在这里了:path_signed_7zip.apk 便是了。
3.上传补丁包,修复bug
1. 进到Tinkerpatch官网,找到自己的APP,如下图。因为我已经上传过补丁了。此时大家可以点击旁边的添加APP版本,然后根据自己的情况输入版本号。
添加好之后生成下图
然后上传之前打包好的补丁包:path_signed_7zip.apk 。 点击提交,然后杀掉手机上已经安装好基础包的APP进程,再打开等待表演开始。
也许你这时等了好久发现,咋没成功呀。进程杀死了N遍啊,是我打开的方式不对?
告诉你,此时你把此文往上翻,找到我标红的文字那里,是不是有个坑?
再去阅读他们的开发文档,你会发现:
对比一下,去看Application 的配置是不是发现了不一样?时间!! 问题出在轮询的时间上。
好了,以上就是大概Android热修复的全部流程了,由于写这篇文章与开发时间不一致,好些内容都忘了。希望能帮到大家。
小朋友和小朋友的妈妈都喜欢看~