Tinker的测试流程

作者: David_zhou | 来源:发表于2020-01-17 15:47 被阅读0次

项目是用来bugly集成的tinker作为热更工具,在打包patch后测试有点繁琐,容易忘记。因此记录下测试流程以作备忘。按照Bugly Android热更新详解中的介绍, 完整的测试流程如下所示,过程有点长。

  • 打基准包安装并上报联网(注:填写唯一的tinkerId)
  • 对基准包的bug修复(可以是Java代码变更,资源的变更)
  • 修改基准包路径、修改补丁包tinkerId、mapping文件路径(如果开启了混淆需要配置)、resId文件路径
  • 执行buildTinkerPatchRelease打Release版本补丁包
  • 选择app/build/outputs/patch目录下的补丁包并上传(注:不要选择tinkerPatch目录下的补丁包,不然上传会有问题)
  • 编辑下发补丁规则,点击立即下发
  • 杀死进程并重启基准包,请求补丁策略(SDK会自动下载补丁并合成)
  • 再次重启基准包,检验补丁应用结果
  • 查看页面,查看激活数据的变化

一般应用都会有内部的测试入口,我们可以先将补丁push到手机,然后在这个界面手动调用tinker的api手动加载patch文件。下面介绍下debug包简化版的操作流程。使用的版本是

bugly bugly:1.4.2
tinker-android-lib:1.9.14
tinker support:1.2.0

一:正常打包
二:bug修复
三:修改tinker id.打patch包。
这个地方需要修改tinker.gradle中的tinkerId和baseApkDir这个变量。baseApkDir的名字是app/build/bakapk下的目录名字。使用的哪一个目录,就需要安装对应目录下的apk的手机上。
测试包使用tinkerPatchDebug打patch,线上包也可以用tinkerPatchRelease本地打patch。这个地方取决于安装包的类型,另外tinker.gradle中的apk文件,R.txt文件也需要做相应的修改。debug包可以用来断点调试。

1579245651153.png

四:将patch文件push到手机
使用adb 命令将patch文件push到手机,patch文件位于app/build/output/apk/tinkerPatch/debug目录下,选择的文件是patch_signed_7zip.apk。使用adb 命令如下

adb push D:\XXX\app\build\outputs\apk\tinkerPatch\debug\patch_signed_7zip.apk /storage/emulated/0

五:手动安装
这个需要我们事先在app的测试代码中先写好,tinker提供了手动加载patch的api。手动加载的代码如下:

Beta.applyTinkerPatch(this, Environment.getExternalStorageDirectory().absolutePath + "/patch_signed_7zip.apk")

Beta是bugly提供的类,如果是直接集成的tinker,调用的API代码如下:

TinkerInstaller.onReceiveUpgradePatch(context, patchFilePath);

六:观察日志
日志过滤的关键字是“tinker”,另外因为patch操作是在另外的进程,所以日志框最右边应该选择“No filter”,如下图所示:


1579246911530.png

如果出错,可以从日志中找到出错的code,然后在patch的文档中找到对应的出错信息。

参考链接
感谢tinker团队以及bugly团队!
Bugly Android热更新详解

相关文章

网友评论

    本文标题:Tinker的测试流程

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