安卓 热修复-Tinker接入

本文主要讲tinker官方Demo的接入使用,没有用到tinkerPatch补丁后台管理系统。

1.从git上面下载tinker的官方demo下来,里面的东西不深究,就直接从他的tinker-sample-android这个demo 开始

2.将其导入as中,一般直接导入进来是无法运行的,他会报错,这是个什么错呢,啥玩意又是tinkerid呢,从上面的wiki里面可以看出这些参数的意思,如果对build.gradle里面那些配置参数不懂的都可以在上面的wiki中寻找到,这个tinkerID我的理解就是加密和解密一样的匹配关系,验证基准apk包的时候判断是不是补丁包的tinkerid一样

安卓 热修复-Tinker接入_第1张图片 

3.这个tinkerid 可以用git版本号,也可以用versionname来定义,这个demo里面他用的是他的git 版本号,所以直接拿来我们跑肯定是有问题的,我们需要手动修改下这个(如果你有配git的话可以用git版本好来定义,如果没有的话就用versionname一样,反正最终都是用一个字符串来表示),如果修改build.gradle里面的 def gitSha()方法 我用的是git的版本号 

命令行敲命令:git --version ,获取版本号

两种方式设置tinkerID均可,最终都是用一个字符串来表示,如下图所示:

安卓 热修复-Tinker接入_第2张图片

4,我们在gradle里面运行assembleDebug(双击执行)生成一个apk文件 我们先将这个apk安装到手机上;

安卓 热修复-Tinker接入_第3张图片

 

5,上一步生成apk包后,在这个 目录复制.apk的名字和.txt文件的名字,进入build.gradle里面将tinkerOldApkpath和tinkerapplyResourcePath的路径替换成刚才你复制的,这样就等于指定了后期更新的包 是要替换掉这个前期的包。

安卓 热修复-Tinker接入_第4张图片安卓 热修复-Tinker接入_第5张图片

6,紧接着对项目进行任意修改(价格按钮,改下图片啥的),模拟对项目进行了bug修复,最后就要发补丁版本了(第4步的是base版本,这一步生成补丁版本)

我们在gradle里面运行gradle里面tinker目录下的tinkerpatchdebug(双击执行):

安卓 热修复-Tinker接入_第6张图片

 

7,将这个生成的pathc_signed_7zip.apk这个补丁包放入我们内存卡的根目录中,可以直接将这个apk放入我们的根目录,也可以执行:adb push apk包全路径  /storage/sdcard0/

命令来将我们的补丁包放入sd卡根目录。 

 安卓 热修复-Tinker接入_第7张图片

8,点击我们一开始安装的app ,点击LOAD PATCH加载我们的补丁包,再点击kill self或者彻底退出应用,再重新进入,补丁即生效!至此热修复结束

安卓 热修复-Tinker接入_第8张图片

 

总结: 一开始我也研究了挺久 ,实际项目使用的热修复跟官方的demo还是有很大的差别的,因为我不想使用tinkerPatch补丁后台管理系统,可以直接这样做:在应用入口Application类,或MainActivity中,加一个检查更新补丁的功能,若服务端有最新的包,则下载下来并保存到sdcard,在让应用加载补丁包即可实现热修复功能。

检查更新推荐UpdateAppUtils,一行代码快速实现app版本更新https://github.com/teprinciple/UpdateAppUtils

你可能感兴趣的:(Android,Studio,java,Android)