关于Google Service不可用的排查问题总结

1. 背景:

同事在小米手机上使用Google Service 进行定位和获取POI时,调用方法执行后,未获取到任何回调,无成功无失败。

2.排查:

用该小米手机连上USB,未能识别,遂放弃该手机联调。

乃用HUAWEI Nova来调试,因为nova也定位不到。(但是,nova是有任务结束回调的)

提出猜想:

A.Google服务不可用

通过调用GoogleApiAvailability,得到结果result = SUCCESS,即可用。怀疑该API的使用价值。

B.Google服务可用,但是接口调不通。

未找到判断某个接口可用的判断方法。

C.还是缺少某个服务组件。

无法判断是哪个。

D.Google服务框架版本不对

参考HUAWEI Mate 10,安装了Google服务框架,经测试问题没有改变。

以上思路,无法解决问题,卡住了。

这个时候,新的一周,新的思路:

同事自己连上小米手机,通过GoogleApiAvailability调用,得到result = INVALID,即不可用。那么也就是说,官方Serivce API的使用价值无需怀疑。可得,nova的Google Service确实可用。那么为什么调不通呢?根据小米和nova的不同反馈,推出猜想:

nova的错误和小米不一样,nova有另外的错误。

排查查看logcat,发现了错误,网上搜查,怀疑是Google Service版本与系统不兼容,内部出现了错误。即Google Service进程有问题。

验证:将应用中的Google Service相关一律卸载,再次调用GoogleApiAvailability判断是否可用,返回INVALID,即不可用。证明上面推断。

3.解决方案:

考虑的国外默认Google服务可用且版本正确,在方法执行时,事先判断GoogleApiAvailability是否可用。

4.总结

在解决该问题时,犯了许多错误,致使花费时间较长,大概两三天,如果方向正确的话,根本不需要这么久时间,一天足够了。错误如下:

1.怀疑GoogleApiAvailability的可用性,不该不该。

2.未对错误手机小米和nova进行对比分析,致使变量较多,只能乱猜乱试。

3.未对nova的异常情况认真分析,对nova的错误未重视,把nova的错误等同为小米的错误。

4.只考虑到更换google服务框架,未考虑到完全卸载的场景。

5.未对小米手机进行调试,也就是没有对病人进行针对性检查,却换了一个相似的病人进行排查,却不曾想,两者表象相同,但实际问题并不一样。实乃庸医。

无数事实证明,解决问题的思路很重要。谨记!

你可能感兴趣的:(关于Google Service不可用的排查问题总结)