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!
含义:地图鉴权未通过,导致无地图权限。
三、已完成的配置检查
-
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
-
工程配置
agconnect-services.json已放入entry/src/main/resources/rawfile/module.json5中metadata.client_id=6917599280681179801(与 AGC App ID 一致)capabilities已添加 Map Kit:com.huawei.service.mapkit- 已声明
ohos.permission.LOCATION、ohos.permission.APPROXIMATELY_LOCATION、ohos.permission.INTERNET
-
签名相关
- 使用 DevEco 自动生成的调试签名
- keystore:
C:\Users\85082\.ohos\config\default_application_xxx.p12 - profile:
C:\Users\85082\.ohos\config\default_application_xxx.p7b - keyAlias:
debugKey
四、疑点 / 待确认
-
SHA256 来源不一致
- 听说 AGC 应使用
.p12签名证书的 SHA256,而不是.p7b中的证书 - 当前 AGC 中配置的 SHA256 来自
.p7b,不确定是否应与.p12一致 build-profile.json5中的storePassword为 DevEco 加密存储,无法直接用keytool获取.p12的 SHA256
- 听说 AGC 应使用
-
鉴权失败原因
- 除 SHA256 外,还有哪些常见原因会导致
no map permission!? - 是否需要检查 AGC 中应用的包名、签名等是否完全匹配?
- 除 SHA256 外,还有哪些常见原因会导致
-
agconnect-services.json
- 是否需在 AGC 重新生成并下载最新配置?
- 修改 SHA256 后,是否需要重新下载该文件?
五、请求帮助
- 如何正确获取 .p12 调试签名证书的 SHA256 指纹?(已知
storePassword为加密值,无法直接用于keytool) - AGC 中 Map Kit 应配置的 SHA256 来自 .p12 还是 .p7b?两者是否必须一致?
queryTile error: no map permission!的常见排查步骤有哪些?- 若需在 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
更多关于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.json5的material部分找到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)是否与你的应用
bundleName(com.appv2.reminder)完全一致。 - App ID:确认
module.json5中metadata的client_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)并重新运行应用。
总结操作建议:
- 使用上述方法获取你当前调试签名
.p12证书的正确SHA256指纹。 - 登录AGC控制台,进入你的项目,在“项目设置”或“应用”的“签名证书指纹”处,删除旧的指纹,添加新的.p12 SHA256指纹。
- 在AGC控制台,重新下载
agconnect-services.json配置文件。 - 用新下载的
agconnect-services.json文件替换工程中entry/src/main/resources/rawfile/目录下的旧文件。 - 在DevEco Studio中执行
Build > Clean Project,然后重新构建并运行应用。
完成这些步骤后,Map Kit的鉴权问题应能得到解决。

