HarmonyOS 鸿蒙Next中map kit不能正常渲染

HarmonyOS 鸿蒙Next中map kit不能正常渲染

Map Kit 403 提问总结


一、环境信息

项目 内容
项目类型 HarmonyOS / ArkTS
包名 com.appv2.reminder
App ID (client_id) 6917599280681179801
targetSdkVersion 6.0.2(22)
功能 提醒类应用,使用 Map Kit 进行地图选点
开发环境 DevEco Studio + Windows

二、当前问题

现象:Map Kit 调用失败,HiLog 报错:

queryTile error: no map permission!

含义:地图鉴权未通过,导致无地图权限。


三、已完成的配置检查

  1. AGC (AppGallery Connect)

    • 已开通 Map Kit
    • 已添加 SHA256 指纹(来源:.p7b 证书)
    • 当前配置的 SHA256:55:38:5D:CE:CF:EC:59:ED:ED:B1:D0:E6:A9:9E:51:EF:66:16:43:7A:2A:5F:BE:85:46:A1:B1:0E:C3:7B:62:9A
  2. 工程配置

    • agconnect-services.json 已放入 entry/src/main/resources/rawfile/
    • module.json5metadata.client_id = 6917599280681179801(与 AGC App ID 一致)
    • capabilities 已添加 Map Kit:com.huawei.service.mapkit
    • 已声明 ohos.permission.LOCATIONohos.permission.APPROXIMATELY_LOCATIONohos.permission.INTERNET
  3. 签名相关

    • 使用 DevEco 自动生成的调试签名
    • keystore:C:\Users\85082\.ohos\config\default_application_xxx.p12
    • profile:C:\Users\85082\.ohos\config\default_application_xxx.p7b
    • keyAlias:debugKey

四、疑点 / 待确认

  1. SHA256 来源不一致

    • 听说 AGC 应使用 .p12 签名证书的 SHA256,而不是 .p7b 中的证书
    • 当前 AGC 中配置的 SHA256 来自 .p7b,不确定是否应与 .p12 一致
    • build-profile.json5 中的 storePassword 为 DevEco 加密存储,无法直接用 keytool 获取 .p12 的 SHA256
  2. 鉴权失败原因

    • 除 SHA256 外,还有哪些常见原因会导致 no map permission!
    • 是否需要检查 AGC 中应用的包名、签名等是否完全匹配?
  3. agconnect-services.json

    • 是否需在 AGC 重新生成并下载最新配置?
    • 修改 SHA256 后,是否需要重新下载该文件?

五、请求帮助

  1. 如何正确获取 .p12 调试签名证书的 SHA256 指纹?(已知 storePassword 为加密值,无法直接用于 keytool
  2. AGC 中 Map Kit 应配置的 SHA256 来自 .p12 还是 .p7b?两者是否必须一致?
  3. queryTile error: no map permission! 的常见排查步骤有哪些?
  4. 若需在 AGC 中更新 SHA256,修改后是否需要重新下载 agconnect-services.json 并覆盖本地文件?

六、相关文件路径(供参考)

application/build-profile.json5             # signingConfigs
application/entry/src/main/module.json5    # client_id, capabilities, 权限
application/entry/src/main/resources/rawfile/agconnect-services.json
application/entry/src/main/ets/pages/MapSelect.ets    # 地图选点页面

七、附:配置片段

build-profile.json5(signingConfigs,已脱敏)

"signingConfigs": [
  {
    "name": "default",
    "type": "HarmonyOS",
    "material": {
      "certpath": "C:\\Users\\85082\\.ohos\\config\\default_application_AoNyEqyq6CdRzny2-35HwmETY3K241_OH-yIYx6vDGw=.cer",
      "keyAlias": "debugKey",
      "keyPassword": "***(已脱敏)***",
      "profile": "C:\\Users\\85082\\.ohos\\config\\default_application_AoNyEqyq6CdRzny2-35HwmETY3K241_OH-yIYx6vDGw=.p7b",
      "signAlg": "SHA256withECDSA",
      "storeFile": "C:\\Users\\85082\\.ohos\\config\\default_application_AoNyEqyq6CdRzny2-35HwmETY3K241_OH-yIYx6vDGw=.p12",
      "storePassword": "***(已脱敏)***"
    }
  }
]

module.json5(metadata)

"metadata": [
  {
    "name": "client_id",
    "value": "6917599280681179801"
  }
]

build-profile.json5(capabilities)

"capabilities": [
  {
    "bundleName": "com.appv2.reminder",
    "config": [
      {
        "name": "Push Kit",
        "capability": "com.huawei.service.push.base_service"
      },
      {
        "name": "Device status detection",
        "capability": "com.huawei.service.device_security.device_verify"
      },
      {
        "name": "Map Kit",
        "capability": "com.huawei.service.mapkit"
      },
      {
        "name": "Safety Detect",
        "capability": "com.huawei.service.device_security.safety_detect"
      }
    ]
  }
]

更多关于HarmonyOS 鸿蒙Next中map kit不能正常渲染的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

更多关于HarmonyOS 鸿蒙Next中map kit不能正常渲染的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


鸿蒙Next中Map Kit渲染异常可能由以下原因导致:网络权限未开启、地图服务未正确配置、API密钥无效或过期、设备网络连接不稳定、SDK版本与系统不兼容。请检查网络权限设置,确保在module.json5中声明ohos.permission.INTERNET权限;验证地图服务配置和API密钥状态;确认设备网络正常;并确保使用的Map Kit SDK版本与鸿蒙Next系统兼容。

根据你的描述,问题核心在于Map Kit鉴权失败。no map permission! 错误通常由签名指纹不匹配导致。以下是针对你疑点的解答:

1. 如何获取.p12调试签名证书的SHA256指纹?

  • 在Windows的DevEco Studio中,你可以直接通过IDE获取。打开 File > Project Structure > Project > Signing Configs,查看你的调试签名配置。在“Store File”路径旁,通常会有一个“View”或类似按钮,点击后可以查看该.p12文件的证书详情,其中包含SHA256指纹。
  • 如果上述方法不可用,你可以使用OpenSSL命令(需安装OpenSSL)来提取。命令格式为:openssl pkcs12 -in [你的.p12文件路径] -nodes | openssl x509 -noout -fingerprint -sha256。执行时会要求输入storePassword。对于DevEco自动生成的调试证书,其storePassword通常与keyPassword相同,你可以在build-profile.json5material部分找到keyPassword(已脱敏,但IDE内可查看明文)。

2. AGC中应配置.p12还是.p7b的SHA256?

  • 必须配置.p12文件的SHA256指纹。AGC进行应用鉴权时,验证的是最终签名APK/HAP的证书指纹,而.p12是包含私钥的签名文件。.p7b是HarmonyOS的调试Profile文件,其包含的证书指纹与.p12中的证书指纹理论上应一致,因为它们通常来自同一对密钥。但为确保绝对准确,应以.p12证书的指纹为准。你当前配置了.p7b的指纹,这很可能就是鉴权失败的原因。

3. no map permission! 常见排查步骤:

  • 签名指纹:确保AGC中配置的SHA256指纹与当前构建应用所使用的.p12签名证书的指纹完全一致(冒号分隔格式)。这是最常见原因。
  • 包名:检查AGC项目中应用的包名(package name)是否与你的应用bundleNamecom.appv2.reminder)完全一致。
  • App ID:确认module.json5metadataclient_id值与AGC中该应用的App ID完全一致。
  • 服务开关:在AGC控制台,确保已为该项目正确开通Map Kit服务。
  • 网络权限:你已声明ohos.permission.INTERNET,正确。
  • 配置文件:确保agconnect-services.json文件是从当前AGC项目下载的,且放置路径正确(entry/src/main/resources/rawfile/)。

4. 更新AGC SHA256后,是否需要重新下载agconnect-services.json?

  • 是的,必须重新下载并覆盖本地文件agconnect-services.json文件包含了项目的配置信息,当你在AGC控制台修改了应用的签名指纹后,需要重新下载该配置文件,并替换工程中的旧文件。然后清理构建(Build > Clean Project)并重新运行应用。

总结操作建议:

  1. 使用上述方法获取你当前调试签名.p12证书的正确SHA256指纹。
  2. 登录AGC控制台,进入你的项目,在“项目设置”或“应用”的“签名证书指纹”处,删除旧的指纹,添加新的.p12 SHA256指纹。
  3. 在AGC控制台,重新下载agconnect-services.json配置文件。
  4. 用新下载的agconnect-services.json文件替换工程中entry/src/main/resources/rawfile/目录下的旧文件。
  5. 在DevEco Studio中执行 Build > Clean Project,然后重新构建并运行应用。

完成这些步骤后,Map Kit的鉴权问题应能得到解决。

回到顶部