乐趣区

关于android:华为应用已经调用了checkAppUpdate接口为什么应用内不提示版本更新

问题形容

利用已上线,我再更新了华为游戏服务 SDK 之后,测试发现利用启动后不弹版本更新提醒。但我的确依照官网领导文档要求,曾经调用了 checkAPPUpdate 检测更新接口。

参考文档:游戏降级

问题剖析和解决

我找到华为技术反对,对方让我先自行检查一下几点:

  1. 接口调用代码是否正确。
  2. 因为利用已上线,能够把更新包的版本号 versionCode 改小(比线上包的版本号小),看看本地装置更新包启动后是否会弹出版本更新提醒——华为利用的降级逻辑是依据版本号来的,只有线上有新版本(版本号比本地的大),就会提醒降级。
  3. 利用启动后,能够取全量日志看下,如果能搜到 UpdateSDK version is:xxx 信息日志,也能阐明接口曾经调用。

我对照下面三点都查看了下,确定接口调用了。

把日志发给华为技术,对方发现报错信息如下:

Updateinfo is not recommend, reason: Uninstall the old version before installation ,is same signature: 1

这个报错阐明我的游戏在不举荐更新列表外面,因为签名不统一。

这种状况,SDK 不会提醒更新,然而去利用市场会看到相干提醒语。而后我关上利用市场搜寻游戏,果然看到了:“更新包签名与旧版本不统一,需先从设施上齐全卸载旧版本才可更新。可能导致程序数据或游戏存档失落,是否持续卸载”。

然而我本人查看了下,确定签名没有更改过。

而后华为技术反对通过 appid 查问到咱们游戏退出了华为的签名服务:

且过后勾选的是这个选项:

如果抉择“让 AG Connect 创立并治理我的利用签名密钥”,AGC 会对利用生成一个新的签名密钥,并应用新的签名密钥对利用重签名。简略能够了解为,我本人出包的时候签名是 A,应用这种形式的签名服务后,华为做了重签名,所以线上包的签名变为 B,而签名 B 我是无奈获取的,此时我本地出新包,用的还是签名 A,这样新包和线上包签名就不一样了。所以就算 checkAPPUpdate 接口调用,且把 versionCode 改小了去测试,利用内不会提醒版本更新,在利用市场里会提醒签名不统一。只有当新包上线了,之前在利用市场上下载老包的玩家,才会在利用里被提醒有版本更新。

如果抉择“导出并上传密钥和证书”,AGC 会应用 CP 上传的签名密钥对利用重签名,也就是说,这种形式下,只有我的新包是用我本人签名和上传密钥,就能够在新包上线前,本地测试利用内弹出版本更新框了。

在华为技术的剖析阐明下,我确认新包签名不变后,提交了审核。

PS:

下面两种华为“利用签名密钥”选项,一旦抉择其一,不反对批改。

如果新包用的签名和之前老包的(我本人的)签名不统一的话,审核会提醒签名不统一并驳回的。(而不是在利用市场外面提醒啦)

签名服务一旦退出了,不能删除,不过能够从新创立一个利用。

退出移动版