接入腾讯tinker,实现热更新

笔者一开始想要接入热更新的时候,在网上找资料找了半天,资料很多,但是大部分写的还是不够详细,官网上介绍的也比较省略。笔者尝试了多次以后,才终于做成功了。下面就开始详细介绍tinker集成的过程。

先简单介绍一下tinker,官网上给的解释是:“Tinker 是一个开源项目,它是微信官方的 Android 热补丁解决方案,它支持动态下发代码、So 库以及资源,让应用能够在不需要重新安装的情况下实现更新。”。官网网址http://www.tinkerpatch.com/Docs/intro

也就是说,它是通过生成补丁包的方式实现在线的实时更新的,补丁包储存了改动过的代码部分,这里的改动是相对于基准包来说的。基准包,类似于标准包,所有的补丁生成都要基于这个最开始的版本。也就是app的版本,这里最好对应apk的build文件的versionName的值。也是为了方便标记。

下面开始准备步骤。

1.首先要到tinkerPatch平台申请一个账号,该平台是用来管理生成的补丁包的。操作流程参照http://www.tinkerpatch.com/Docs/start。过程很详细。新建一个app的时候,会生成appkey,项目里会用到。

2.打开android studio,新建一个项目。笔者用的开发工具版本是3.4.1。

在根目录build文件,dependencies{}代码块里增加一行代码:classpath("com.tinkerpatch.sdk:tinkerpatch-gradle-plugin:1.2.13") { changing =true },如图

然后在app的build文件新加入一行依赖:implementation("com.tinkerpatch.sdk:tinkerpatch-android-sdk:1.2.8"),不要低于1.2.8,否则合并会出现各种问题。versionName随意填写,这里的是1.0.2。加入签名配置。



读者可能已经注意到,build文件引入了另一个tinkerpatch.gradle文件。该文件需要另外新建。请看下一个步骤。


3.1.新建tinkerpatch.gradle文件。这里我们需要官网提供的demo,打开网页https://github.com/TinkerPatch,如图,

选择第2个,下载到本地。打开。demo里面也有一个现成的tinkerpatch.gradle文件,将该gradle文件拷贝到你自己的项目里。

tinkerpatch.gradle文件里面的参数配置,都是键值对的形式。只有几点需要注意。


baseInfo,基准包的文件名称。下面步骤4会生成基准包得文件名称。

varientName,这里改成release。

tinkerEnable,是否支持补丁生成,这里是true。

appKey,上面步骤1获取到的。

appVersion,版本号,和项目的versionName保持一致,这里是1.0.2。

除了以上提到的参数需要改动的,其他的都使用的默认就好了。每一个参数的意思和用处,源代码里面也都有详细的注释。这里就不再多做介绍。

3.2

自定义application类。新建SampleApplication,继承Application。参照demo里面的写法。最主要的方法如下


方法使用了建造者模式,可以设置轮询时间等条件。

4

以上的三个步骤都是准备工作。下面就开始生成补丁包。首先,生成一个基准包。这里指的就是正式包。

运行assembleRelease。编译完成后。在app的build文件下会生成bakApk文件,因为下一步要执行clean操作,为防止被清空,所以先将这整个文件转移到project目录下。

执行clean项目的操作。完成后,将bakApk再重新转移到原先的build目录下。同时将该文件目录下的app-release.apk也安装到手机上。文件目录结构如图。


然后修改tinkerpatch.gradle的baseInfo参数,改成图中的文件名,即“app-1.0.2-0801-10-19-42”。下一步,我们需要在我们的代码里面做一些修改,比如改变首页的文字什么的,这里建议读者改动的地方最好是能直接看到的地方。改好后,我们还需要在tinkerPatch平台对应的项目下新增一个app版本。版本号和这里保持一致都是1.0.2。

然后,运行 任务tinkerPatchRelease 。编译完成后,在output文件下就可以看到生成的补丁文件了。通常会有两个,建议选择7zip.apk结尾的补丁,因为体积会小一点。如图


5.最后,打开tinkerPatch管理平台,在对应的项目对应的版本下发布刚刚生成的补丁。发布方式选择全量下发。发布成功之后,手机打开app,测试代码有没有自动更新。通常情况下,在app进程被清掉的情况下再重新打开app才会看到生效。这里说通常,是因为生效并不总是能立即生效,可能需要再重复app进程重启的过程。

如果需要立即看到生效的,那么要在手机上再下载安装一个调试apk,官网提供了下载链接操作http://www.tinkerpatch.com/Docs/dev,在“调试工具”下面提供了下载链接。同时我们补丁的发布方式要改成开发预览模式,如下

这样操作完成后,手机上打开调试工具apk,开启模式选择,重新打开我们的app进程之后,就可以看到更新的部分已经生效。

到这里,tinker热更新的全部步骤已经都介绍完毕。

最后,tinkerpatch里的appVersion值什么时候改变的问题。除非你新增了一个全新的基准包,appVersion的值才会变,比如从1.0.2变到了1.0.3,其实就是正常的app升级到下一个版本,作为新的tinker基准包。同时在tinkerPatch平台也要新增一个app版本,版本号为1.0.3。因为平台提供的容量是有限的。在确保安全的前提下将旧的基准包删除以节省空间。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,064评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,606评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,011评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,550评论 1 269
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,465评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,919评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,428评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,075评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,208评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,185评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,191评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,914评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,482评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,585评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,825评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,194评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,703评论 2 339

推荐阅读更多精彩内容