android应用市场增量更新的那些坑

Posted by Maker Chen on May 29, 2016

一个因为市场的更新机制而导致的app奔溃问题,你不了解一下吗?


问题回顾

上周五历经多个迭代开发的APP终于完成封版,准备上线。官网与某应用市场同步发布。原本以为今天能够按时下班,想想也是太天真了!没过多久,应用市场传来了诸多差评,如下:

  • 更新完,闪退!请适配android5.0
  • 登录完就闪退!
  • 闪退

等诸如此类关于闪退的反馈。

排查、测试

第一反应自然是非常疑惑,甚至脑子里还一闪而过认为是竞争对手恶意刷的差评?因为像登录这种最基本的测试场景流程走了不下百遍了,不大会出现评论里有大量的反馈说存在闪退现象。 可想归想,但问题还是要排查的。猜测了多种可能性:例如市场包与官网包是否一致、版本更新升级兼容性是否存在问题等,但最终都被一一否决了。万幸的是,一个前同事也出现了同样的现象,抓包分析显示找不到登录所需要的动态链接库。立马从应用市场下载最新的包,比较来比较去发现并无不同。正当疑惑的时候,发现了应用市场有个功能叫做省流量更新。继续测试,果不其然,正是这个“省流量更新”导致了奔溃问题。随着测试的不断进行,我们观察出android5.0系统以下的手机均无问题,而android5.0系统的手机都存在无法登录的问题;随后对市场的合成包进行分析,正是这个合成包少了登录所需要的so库;而如果不走省流量更新的话则无任何问题。

原因

迅速通过渠道联系到应用市场的技术人员,跟他们描述了此现象。并逐步开始分析原因。巧的是,刚好在这一版应用程序中引入了加固程序。在出问题的第一时间就联系到了加固厂商帮忙查看。而他们也不负所望,没过多久,基本把问题定位了。 原来在我们的应用程序中有个表明渠道信息的文件是个空文件,正是由于这个空文件命中了应用市场增量合成算法的bug,并且在安装过程中又恰巧命中了android5.0以上的zip格式检查的一个bug,两者一起刚好同时导致了该闪退问题的出现。既阉割版的应用程序能够正常安装但不会出错,也能正常运行起来,但是少了核心的so库,表现就是无法登录。

后续

想必大家都看过一篇美团技术团队发布的关于优化打渠道包的文章(链接在此)。我们在打渠道包的时候,也是参考了这个方法。为了防止后续其它市场出现类似问题,我们采用的方法就是向渠道信息文件里写入了一些无用的字符。或许后续美团技术团队的人员看到这篇文章,可以去更新一下那篇技术文章,防止更多的人踩坑。

再说一句。如果你不是开发者,看到这篇文章。发现更新的应用程序安装后无法正常工作,可以尝试一下去官网下载最新包或者卸载重新安装一下。因为你不知道,是否真是程序问题还是应用市场那所谓的省流量更新功能的问题,无论是大市场还是小市场是程序就会有bug。与其坐着干等着程序的更新,还不如自己着手试一下,或许你就真的解决了呢!“重启一下试试”–万能的IT法则。存在总是有原因的。

enjoy it!


查看更多原创,请添加关注微信公众号。