背景

开发者在应用中集成HMS Core部分服务时,android sdk 以及flutter等跨平台sdk,会出现编译打包后,运行报6003错误码的情况。根据查询可以得知,错误代码 6003 表示证书指纹配置不一致,主要是生成的包(例如安卓apk)的签名,与华为开发者平台上应用设置里面配置的不一致。

原因

  1. 未按照开发文档,在AppGallery Connect 应用设置配置签名SHA256
  1. 已经在开发者平台上配置SHA256,但是和实际打包生成apk签名的 SHA256不一致。

解决方法

  1. 按照官方文档配置SHA256即可:

注意:添加SHA256之后,需要重新下载agcconnect.json文件更新到工程,重新生成应用apk。

  1. 可以直接获取打包生成的apk签名的SHA256, 添加配置到AppGallery Connect 应用设置配置下,然后重新下载agcconnect.json文件更新到工程,重新生成应用apk。

开发者可以使用以下任意一种方式获取apk 指纹并进行比较,确保它是相同的:

方式一:jarsigner

命令示例:jarsigner -verbose -verify MyAPK_base_v11.0.apk > MyAPK_info.txt

查看MyAPK_info.txt 找到".RSA"文件的路径,然后使用以下命令 解析.RSA

unzip -p MyAPK_base_v11.0.apk META-INF/BNDLTOOL.RSA | keytool -printcert

结果:

Certificate fingerprints:

SHA1: D0:88:29:99:94:C3:72:44:EA:CF:B1:6B:09:3E:01:95:FE:E4:45:BE

SHA256: EF:68:A7:0A:3A:47:F8:DD:46:58:52:EA:E2:59:AE:D6:1A:43:38:D8:14:26:05:9E:D3:99:C2:D1:F6:34:D9:DE

Signature algorithm name: SHA1withRSA (weak)

Subject Public Key Algorithm: 1024-bit RSA key (weak)

方式二:apksigner.bat

命令示例:(apksigner.bat 通常位于 /android/build-tools 文件夹中)

apksigner.bat verify --print-certs MyAPK_base_v10.2.6-8569.apk

结果:

Signer #1 certificate DN: CN=Michael Smith, OU=My Org, O=A Team, L=Okemos, ST=Michigan, C=US

Signer #1 certificate SHA-256 digest: ef68a70a3a47f8dd465852eae259aed61a4338d81426059ed399c2d1f634d9de

Signer #1 certificate SHA-1 digest: d088299994c37244eacfb16b093e0195fee445be

Signer #1 certificate MD5 digest: 68710e87d99e7f946958db33d3fcf13c

由此可获取到打包的签名SHA256为:

EF:68:A7:0A:3A:47:F8:DD:46:58:52:EA:E2:59:AE:D6:1A:43:38:D8:14:26:05:9E:D3:99:C2:D1:F6:34:D9:DE

将其与AppGallery Connect中进行对比SHA-256。如果不存在,就添加SHA256(同一个应用可以添加多个SHA256),然后需要重新下载agcconnect.json文件更新到工程,重新生成应用apk。

如果签名SHA256添加配置一致后依旧报6003错误,则需要开发者在自己设备的Apps页面中找到HMS Core (APK)并清除缓存,重启应用程序后再次执行之前的操作。这是HMS Core (APK)可能会缓存签名文件而导致的。

了解更多详情>>

访问华为开发者联盟官网
获取开发指导文档
华为移动服务开源仓库地址:GitHubGitee

关注我们,第一时间了解 HMS Core 最新技术资讯~

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐