问题现象:
游戏启动过程中多次重复弹出如下提示框提醒更新或安装HMS Core最新版本

问题复现
联系华为技术支持沟通,建议我们先复现该问题,并提供异常日志。
复现方法:
非root的华为手机,在设置》应用》应用管理中搜索HMS Core这个APK,点击进去后,右上角有个按钮,选择“卸载更新”,如果卸载更新后无法复现,参考下面两个方法。
非华为手机,直接将HMS Core或华为移动服务这个APK卸载后测试
Root的华为手机,卸载HMS Core后测试
我这里找了个非华为手机卸载HMS Core后,使用adb命令抓取了全量日志。
问题分析
据华为技术支持答复,华为HMS SDK提供的各个业务接口,比如初始化、登录、支付等接口都需要手机上安装HMS Core,如果调用某个接口发现手机上没有安装或安装的HMS Core版本不满足业务需求,会自动弹出安装或升级框,提示玩家安装或升级。
因此建议分析下启动时我们调用的接口,看看调用了哪些接口提示要安装或升级。
搜索日志关键词HMSSDK:
以下日志,表示调用游戏初始化init接口时检查测试手机上的HMS Core APK后,发现没有安装:
Initializing JosAppsClient I/HMSSDK_HuaweiApiManager: sendRequest I/HMSSDK_BaseHmsClient: ====== HMSSDK version: 40000300 ====== I/HMSSDK_BaseHmsClient: Enter connect, Connection Status: 1 I/HMSSDK_BaseHmsClient: connect minVersion:30000000 E/HMSSDK_HMSPackageManager: skip package com.huawei.hwid for metadata is null E/HMSSDK_HMSPackageManager: Failed to find HMS apk
以下日志,表示调用登录接口时检测手机上的HMS Core APK后,也发现没有安装:
I/HMSSDK_[HUAWEIIDSDK]HwIdSignInClientHub: onCreate I/HMSSDK_HmsAPKVersionCheckUtil: ====== HMSSDK version: 40000300 ====== I/HMSSDK_HmsAPKVersionCheckUtil: check minVersion:30000000 E/HMSSDK_HMSPackageManager: skip package com.huawei.hwid for metadata is null E/HMSSDK_HMSPackageManager: Failed to find HMS apk I/HMSSDK_AvailableAdapter: main thread invokes resolution. I/HMSSDK_AvailableAdapter: startResolution
日志表明:游戏初始化init和登录接口都检测到没有安装HMS Core APK,因此会弹出两次弹框。
问题解决
华为技术支持给出如下两种方式:
1. HMS Game Service SDK5.0.1.301及其以后版本,华为优化了init和登录接口同时调用会都弹框的机制,改为即使同时调用,也只弹一次框,因此可以升级SDK版本解决该问题,参考最新版本文档地址。
2. 如果不愿意升级,可以把游戏登录和初始化init接口调用顺序替换下,先调用登录接口,在登录成功的回调中再调用初始化init接口。
分析了我们的项目代码,我们是先调用了init接口,但是因为华为init接口没有回调监听,导致无法保证init调用成功后再调用登录接口,登录接口和init在没有安装HMS Core情况下,会同时弹出多个安装升级提示框。
最后,我们选择更新HMS Game Service SDK版本后(原先使用的版本号是4.0.0.300),问题得到解决。





































苏公安网备 32011402010933号