Android热更新:Tinker与walle结合使用

最近项目上线,终于可以清闲一小段时间,但是为了提升技术总得给自己找点乐子干。(⊙v⊙)嗯,提升App逼格加个热更新吧!
项目中原来是区分渠道标示打包的,加入热更新是否要打多个补丁包?

 一开始先研究Tinker,其原理我想懂行的人都清楚,无非就是应用了类加载方案,如果想使用热更新强烈推荐Tinker接入指南

Tinker的使用方式如下,以gradle接入的release包为例:

  1. 每次编译或发包将安装包与mapping文件备份;
  2. 若有补丁包的需要,按自身需要修改你的代码、库文件等;
  3. 将备份的基准安装包与mapping文件输入到tinkerPatch的配置中;
  4. 运行tinkerPatchRelease,即可自动编译最新的安装包,并与输入基准包作差异,得到最终的补丁包。

 使用过程中可能遇到打补丁包失败问题,通过追根溯源修改了以下两处:

1.忘记添加混淆代码

2.忘记 loader中类必须放入主dex中

 
通过Tinker首先我们打出基础包,注意保留基础包,然后我们开始多渠道打包。

 

美团带来的 新一代开源Android渠道包生成工具Walle

  • 至于为什么选择Walle,我给大家看一张截图,如下:

接入Walle后我们生成渠道包,直接在Android Studio 下面的Terminal 窗口敲入如下命令,回车:
./gradlew clean assembleReleaseChannels 

 

接下来我们使用Tinker热修复各个渠道包

步骤一:修改基础包配置

通过上面步骤生成各个渠道包的同时,在build文件夹下,Tinker同样会给我们打出基础包,相信细心的读者在上一张截图里就会发现,bakApk文件夹里即是基础包相关的文件,同样,我们需要将这文件夹里的三个文件的名称填写到 app 的 build.gradle 类的 ext 这里,sync一下,(这里生成的基础安装包和 R文件以及release版本的mapping文件一定要自己保存好,因为每次打补丁包都需要用到这些文件作为基础文件,别弄丢了),如下图:

build.gradle

步骤二:修复bug

修改项目的bug,demo这里只是增加一个textview控件作为热修复测试,如下图:

 

修复bug测试

步骤三:打补丁包

1.点开 Android Studio的Gradle 界面,如下,双击 tinkerPatchRelease ,如下:

Gradle Tinker

2.紧接着,Tinker 在build 文件夹下的 outputs 文件夹里面会生成我们需要的补丁文件,patch_signed_7zip.apk 就是我们所要的补丁包,如下:

patch_signed_7zip.apk

当然,如果你想了解更多关于输出文件的情况,可以点开Tinker Wiki 的 输出文件详解

步骤四:将补丁包拷贝到手机sdcard中测试

将步骤三生成的 tinkerPatch 文件夹下面的 patch_signed_7zip.apk 文件,拷贝出来,改成你的 MainActivity中加载的文件名字,demo这里叫TinkerPatch,将其拷贝到手机的sdcard中的myTinkerDemo 文件夹下,没有这个文件夹你就自己手动新建一个,下图带你回顾一下 MainActivity 的设置:

注意此处,测试和发布版本的不同:发布版本的补丁文件一般是通过网络下载下来,存放到sdcard中,再加载。

MainActivity

步骤五:加载补丁

点击主页的加载补丁按钮,没加载之前如下界面,里面显示了当前app的渠道信息:

 

发现新bug

点击加载补丁之后,锁屏或者杀死进程,再次进入demo,补丁已经加载出来,在渠道信息下面增加了一个文本,标识新bug已修复。如下:

 

新bug已修复

小结,经过一天的折腾终于搞出来了,激动,哈哈哈哈哈,感觉逼格都提升了一个档次。我们只需要打一个补丁包出来,就可以热修复所有应用渠道上面的bug。


切记:你所有的努力只为遇到更好的自己!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值