Tinker集成教程

原文链接:https://blog.csdn.net/dingshuhong_/article/details/96436153

Tinker的作用

Tinker就是为了解决这种问题而生的, 修改少量的代码,生成差分包,然后用户下载非常小的更新包,就可以解决问题。它是微信官方的Android热补丁解决方案,它支持动态下发代码、So库以及资源,让应用能够在不需要重新安装的情况下实现更新。当然,你也可以使用Tinker来更新你的插件。

https://github.com/Tencent/tinker

下面这个是 官方的demo代码, 下载源码 单独跑这一个demo就可以测试tinker

https://github.com/Tencent/tinker/tree/master/tinker-sample-android

如何接入

废话不多说 直接贴上我的demo代码。

引入依赖

(1) E:\xxx\TinkerDemo\build.gradle


Tinker集成教程_第1张图片

(2) E:\xxx\TinkerDemo\app\build.gradle

Tinker集成教程_第2张图片
Tinker集成教程_第3张图片

(3) 配置一些tinker patch.gradle文件


Tinker集成教程_第4张图片

(4) 测试TinkerDemo

E:\xxx\TinkerDemo\app\src\main\java\com\example\tinkerdemo\MainActivity.java

Tinker集成教程_第5张图片

(5) 没有使用tinker之前的效果


Tinker集成教程_第6张图片

接下来修改一下需要解决的问题, 这里我在布局文件里修改一些东西

对应的需要记住 这个版本的apk 以及 resource R文件,作为基准包。 如果你添加了混淆,需要添加对应的mapping文件。


Tinker集成教程_第7张图片
Tinker集成教程_第8张图片
Tinker集成教程_第9张图片
Tinker集成教程_第10张图片
Tinker集成教程_第11张图片

得到差分包以后,就可以上传到服务器供用户下载,更新。 这里我就直接拷贝到手机的指定目录。


Tinker集成教程_第12张图片

至此,我们的热更新就已经完成了。上面的图我们可以发现,差分包其实就只有几kb大小。 用户只需很短的时间就可以下载好更新包。

(6) 遇到的坑

       (一)权限问题

        加载apk需要将apk复制到指定的文件目录进行资源 和dex文件的插入替换。需要SDK读写权限。 如果你是网络更新还需要网络权限。

    (二)android9.0问题

用真机测试发现出现这样的bug


原因是ensureStringBlocks 已经被加入到黑名单,搜索 github tinker issues ,因为9.0原因,建议使用最新的tinker版本

      (三)生成差分包处所

https://github.com/Tencent/tinker/issues/961

详细原因查看这个issues

解决办法:

1.基准文件备份下

2.clean项目clean(app-build下的bakApk文件夹会被清空,然后把备份的文件重新导入build文件夹内)

3.打补丁包

github Demo地址:https://github.com/MrShuHong/TinkerDemo

————————————————

你可能感兴趣的:(Tinker集成教程)