bugly热更新上传补丁失败原因及解决办法

最近这两天一直在研究腾讯的bugly热更新,bugly团队是基于微信的Tinker热更新方案进行的进一步封装,意在简化程序员的集成难度,相信直接集成过微信Tinker的童鞋肯定深有体会!

有很多童鞋在集成bugly的时候肯定或多或少都遇到过千辛万苦打好的patch补丁文件最后在上传至Bugly平台的时候却提示出错,如下图:

bugly热更新上传补丁失败原因及解决办法_第1张图片

到这一步的时候,上传了打好的补丁文件,屏幕右侧提示:未匹配到对应补丁包的App版本,请确认补丁包的基线版本是否已发布。what the fuck???


解决办法:把你的基准包apk,也就是你存在问题休要修复的那个版本apk,装在手机上,在联网的情况下运行一遍,然后你的补丁就能上传了。

bugly热更新上传补丁失败原因及解决办法_第2张图片


此问题的原因:

一、首先,你需要了解  TinkerId   ,相信很多人看他官方的文档后都知道这个东西,
1、他需要在生成基准包(你要正式往线上发布的版本)的时候设置tinkerID
2、在打补丁的时候还需要再次设置tinkerID,而且这次的tinker和第一步的id不能相同
很多人对此是很不理解的,what  the fuck??原来,你在第一步生成基准包的时候,tinker插件会自动将tinkerID和App当前的版本Version对应起来。例如,你当前的app版本是2.3.1.30,tinkerID设置为2.3.1.30-base,那么这个2.3.1.30和2.3.1.30-base就会对应起来,tinker插件会自动在打包的时候插入到Mainfest.xml文件中。
好了,下面你的2.3.1.30版本app发现问题,你需要打一个补丁包进行修复,这时候你需要再次设置tinkerID为2.3.1.30-patch-03。tinker插件会自动把基准包的的tinkerID和本次补丁包的tinkerID保存在插件中。此时,当你将这个补丁上传至bugly平台,

你的补丁id为2.3.1.30-patch-03  —>  基准包id  2.3.1.30-base  --->  你出现问题的App版本2.3.1.30

bugly热更新上传补丁失败原因及解决办法_第3张图片

二、接下来就是重点了,你在官方的文档总经常会看到“联网上报”这四个字,其实就是说,你打好了基准包,需要先在手机联网的情况下跑一下这个app,这个时候tinker的SDK会将这个基准包的version和基准包tinkerID  上传至bugly,因为你打的补丁版本必须针对于你app的一个确定的版本号。当你跑了基准包的app后,也就是进行了联网上报,此时再次上传补丁,就可以对应上了!可以好好看下上边的对应关系!!

ok,就到这里,希望对你有帮助!




你可能感兴趣的:(安卓应用)