您好,很高兴回答您的问题。
初看您的问题,仿佛一个测试人员在向码龙君抱怨:这是什么鬼,你们开发怎么搞的,最新上线的应用怎么在华为的系统上运行不了?听到这句话,码龙君心里莫名的一颤,仿佛又回到了几年前新应用上线的前夕......
问题概况:新上线的应用版本在华为系统上出现大面积崩溃,异常
严重等级:致命
复现手法:安装后,点击桌面快捷方式启动应用,应用黑屏闪退
复现概率:100%
测试人员:xx君
自BUG管理系统弹出这个问题后,码龙君知道今天又是一个不眠之夜,不禁淡定的抽出那根珍藏已久的中华,翘起二郎腿,慢慢的将烟点燃,那烟雾混合着暗淡的灯光与他那格子衫相得益彰,他的时而点头,时而微笑,虽然诡异但整体画面显得和谐的不能在和谐了......,不一会,他扶了扶眼镜,眼睛里仿佛闪着名侦探般的光芒,对手下的开发人员小王说,真相只有一个,但可能的原因有多种,我们就是要在诸多可能中找出唯一的解:
其一:应用来源是否合法系统在执行应用安装指令的时候会检查应用完整性,如果该应用本身就不是一个完整包,也就是说,安装包有损坏,此时系统执行安装失败,如果是未知来源甚至是风险网站来源的应用,并且此来源在华为黑名单之内,安装则可能会执行失败。
其二:应用是否处理了API兼容安卓系统从发行到如今已经有N多个版本,每个版本之间都或多或少API不兼容的地方,这些地方是否都做了版本判断,也就是说,当一个只适配了Android4.0的应用,放到Android6.0上运行,这时这个应用很大几率会崩溃闪退。
其三:应用是否处理了动态权限申请在Android6.0以上谷歌为其加入了动态权限申请机制,如果是需要调用一些敏感的硬件设备,都需要想系统动态请求权限许可,当应用需要使用某些需要权限许可的API,但是又没有申请权限的话,这时候这个应用也会异常停止,系统会弹出应用崩溃的消息。
其四:是否调用了GMS的相关API华为的系统包括很多友商的系统都并非原汁原味的Android系统了,而是经过改造的,像华为的系统在早期就已经把谷歌的GMS,也就是谷歌移动服务接口给裁剪掉了,当这个应用调用了GMS中的接口时,系统缺少该接口自然就运行不了,市面上很多从国外网站下载下来的应用基本上都在GMS生态的包含范围之内,这些应用是很大概率在华为手机上运行不了的。
其五:应用代码上的其他异常除了以上的四种原因,应用可能还有其他的情况导致崩溃,这需要结合错误日志来分析。
总结经过码龙君的一波六六六的操作,开发人员小王茅塞顿开,很快定位到最大可能性原因,这个BUG最大可能就是 缺少GMS导致的,果不其然,在开发小王飞速的代码review下,确认了GMS就是罪魁祸首。码龙君挥了挥手,留下了个背影给正在抓紧上线的开发小王。
感谢您的阅读,我是@码龙之光 ,欢迎关注我