android 一步一步教你集成tinker(热修复)
Posted 新感觉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 一步一步教你集成tinker(热修复)相关的知识,希望对你有一定的参考价值。
这几天闲着没事,就看了下现在比较火的热修复,确实有了热修复就解决了android native的一个很尴尬问题,之前比起h5,android在用户体验上是有优势,但是过于复杂的版本更新,使用户烦不胜烦(这个深有体会啊,之前项目除了个bug就发布个更新,尼玛还是强制更新,我要是客户我就日了狗),好了不多说了,我们要发车了准备好上车
这就是tinker的wiki : https://github.com/Tencent/tinker/wiki (有啥不懂的就是里面wikiwiki下)。
这是tinker的demo下载地址:https://github.com/Tencent/tinker
集成tinker很so easy跟着 老湿的步骤发车(如有翻车请见谅)
1.从git上面下载tinker的官方demo下来,上面的东西我们先不管,就直接从他的tinker-sample-android这个demo 搞起
![技术分享图片](https://upload-images.jianshu.io/upload_images/5419183-7f7cd83242cd24cf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
2.将其导入as中,一般直接导入进来是无法运行的,他会报错,这是个什么错呢,啥玩意又是tinkerid呢,从上面的wiki里面可以看出这些参数的意思,如果对build.gradle里面那些配置参数不懂的都可以在上面的wiki中寻找到,这个tinkerID我的理解就是加密和解密一样的匹配关系,验证基准apk包的时候判断是不是补丁包的tinkerid一样
![技术分享图片](https://upload-images.jianshu.io/upload_images/5419183-0b8f66e7d90ca9f2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
3.这个tinkerid 可以用git版本号,也可以用versionname来定义,这个demo里面他用的是他的git 版本号,所以直接拿来我们跑肯定是有问题的,我们需要手动修改下这个(如果你有配git的话可以用git版本好来定义,如果咩有的话就用versionname一样),如果修改build.gradle里面的 def gitSha()方法 我用的是git的版本号
![技术分享图片](https://upload-images.jianshu.io/upload_images/5419183-06cb741388a7a05b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
![技术分享图片](https://upload-images.jianshu.io/upload_images/5419183-db9d41c1289f423e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
4.差不多了我们要开始真正的发车了我们可以先在gradle里面运行assembleDebug生成一个apk文件 我们先将这个apk安装到手机上面当作发布出去的apk这就是安装完后的效果图。
![技术分享图片](https://upload-images.jianshu.io/upload_images/5419183-9066f6ee0eb4237a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
![技术分享图片](https://upload-images.jianshu.io/upload_images/5419183-7213c2609b6e6f85.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
5 现在这个项目突然出现问题了,我要对他进行修改给他添加个按钮怎么搞呢,难道又要发版本,尼玛太吓人了一点小东西就要发布版本,客户还用个蛋蛋,好了用了tinker就不用担心这个问题了我们来开始整吧。
将我们刚
![技术分享图片](https://upload-images.jianshu.io/upload_images/5419183-177fac5e398f3008.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
我这里是编译了很多次,一般你们里面应该只会有一个,.apk的名字和.txt文件的名字复制下来进入build.gradle里面将tinkerOldApkpath和tinkerapplyResourcePath的路径替换成刚要你复制的,这样就等于指定了要等会热更新要替换的包
![技术分享图片](https://upload-images.jianshu.io/upload_images/5419183-4c51008f4e6dd478.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
这步完成后基本没啥好改的了,就是一些操作问题了,基本上难不倒各位老司机了,来我们接着发车(有没有到这一步翻车的司机有的话就评论下我给你推2把)。
6,老apk的事情都搞完了,现在来搞搞我们要修复的apk,现在我要在刚那个界面添加一个按钮,等会见证奇迹就是见证这个刷出来的更新按钮。
![技术分享图片](https://upload-images.jianshu.io/upload_images/5419183-b2bde274dcaa437c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/372)
7.界面也改了差不多要看效果了,看效果之前我们还有2个步骤呢慢慢来不急,首先我们要把我们这个新改过的界面gradle里面执行下tinkerpatchdebug
![技术分享图片](https://upload-images.jianshu.io/upload_images/5419183-995f7f9cf08e4985.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
![技术分享图片](https://upload-images.jianshu.io/upload_images/5419183-067583f7f146564b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/692)
将这个pathc_signed_7zip.apk这个补丁包放入我们内存卡的根目录中,可以直接将这个apk放入我们的根目录,也可以执行adb push ./app/build/outputs/tinkerPatch/debug/patch_signed_7zip.apk /storage/sdcard0/命令来将我们的补丁包放入sd卡根目录。
结束:接下来就是见证奇迹的时候 点击我们开始安装的修复之前的app
![技术分享图片](https://upload-images.jianshu.io/upload_images/5419183-e3a8c89eacd47721.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/654)
点击LOAD PATCH加载我们的补丁包(一般情况下,是我们把补丁包给后台哥们,然后让后台哥们给我们来下载下来使用补丁包的),点击后如果有吐司弹出patch success, please restart process,那就表示补丁包加载成功了,这个时候你点击kill self或者关闭屏幕在开启就可以看见奇迹了。
![技术分享图片](https://upload-images.jianshu.io/upload_images/5419183-454244379bdb92e0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
以上是关于android 一步一步教你集成tinker(热修复)的主要内容,如果未能解决你的问题,请参考以下文章