美文网首页
Tinker集成教程

Tinker集成教程

作者: 冬天的火98 | 来源:发表于2019-11-26 16:08 被阅读0次

    原文链接: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

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

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

    (4) 测试TinkerDemo

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

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

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

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

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

    至此,我们的热更新就已经完成了。上面的图我们可以发现,差分包其实就只有几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集成教程

          本文链接:https://www.haomeiwen.com/subject/fclfbctx.html