这几天闲着没事,就看了下现在比较火的热修复,确实有了热修复就解决了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 搞起

 

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

 

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

 
 

4.差不多了我们要开始真正的发车了我们可以先在gradle里面运行assembleDebug生成一个apk文件 我们先将这个apk安装到手机上面当作发布出去的apk这就是安装完后的效果图。

 
 
 

5 现在这个项目突然出现问题了,我要对他进行修改给他添加个按钮怎么搞呢,难道又要发版本,尼玛太吓人了一点小东西就要发布版本,客户还用个蛋蛋,好了用了tinker就不用担心这个问题了我们来开始整吧。

将我们刚

 

我这里是编译了很多次,一般你们里面应该只会有一个,.apk的名字和.txt文件的名字复制下来进入build.gradle里面将tinkerOldApkpath和tinkerapplyResourcePath的路径替换成刚要你复制的,这样就等于指定了要等会热更新要替换的包

 
 

这步完成后基本没啥好改的了,就是一些操作问题了,基本上难不倒各位老司机了,来我们接着发车(有没有到这一步翻车的司机有的话就评论下我给你推2把)。

6,老apk的事情都搞完了,现在来搞搞我们要修复的apk,现在我要在刚那个界面添加一个按钮,等会见证奇迹就是见证这个刷出来的更新按钮。

 

7.界面也改了差不多要看效果了,看效果之前我们还有2个步骤呢慢慢来不急,首先我们要把我们这个新改过的界面gradle里面执行下tinkerpatchdebug

 
 
 

将这个pathc_signed_7zip.apk这个补丁包放入我们内存卡的根目录中,可以直接将这个apk放入我们的根目录,也可以执行adb push ./app/build/outputs/tinkerPatch/debug/patch_signed_7zip.apk /storage/sdcard0/命令来将我们的补丁包放入sd卡根目录。

结束:接下来就是见证奇迹的时候 点击我们开始安装的修复之前的app

 

点击LOAD PATCH加载我们的补丁包(一般情况下,是我们把补丁包给后台哥们,然后让后台哥们给我们来下载下来使用补丁包的),点击后如果有吐司弹出patch success, please restart process,那就表示补丁包加载成功了,这个时候你点击kill self或者关闭屏幕在开启就可以看见奇迹了。

 

最新文章

  1. DataTable操作
  2. 夺命雷公狗-----React---7--组建的状态props和state
  3. CruiseControl.NET开篇
  4. Redis Cluster 3.0搭建与使用
  5. UItableview里面的header、footer
  6. SQL是关于集合的
  7. 多线程&NSObject&NSThread&NSOperation&GCD
  8. 基础面试题——Javascript
  9. win10+vs2013+Qt5.4 安装方法
  10. 分数拆分( Fractions Again, UVA 10976)-ACM
  11. NOI2015 程序自动分析 prog
  12. [转]读取assets目录下的数据库文件
  13. maven学习之二
  14. 用python实现一个简单的词云
  15. php支持大文件上传
  16. 【Codeforces Round】 #431 (Div. 2) 题解
  17. 什么是真正的Java技术,本篇文章让你了解
  18. openwrt添加内核模块
  19. js算法初窥05(算法模式02-动态规划与贪心算法)
  20. git中 .ignore文件的配置 忽略不想上传的文件

热门文章

  1. Disqus评论框改造工程-Jekyll等静态博客实现Disqus代理访问
  2. maven 添加jar到中央/远程仓库
  3. Oracle聚合连接字符串
  4. Ubuntu 12.04.1 mysql从5.5升级到5.6
  5. SLF4J warning or error messages and their meanings
  6. 远程IPC种植木马
  7. Android versionCode和versionName的区别
  8. QT Creator 环境使用 remote debug 调试 arm 程序
  9. kettle实现数据库迁移----多表复制向导
  10. 深入理解JVM(三)——垃圾收集策略具体解释