react-native-hms-map集成后空白且onMapReady不触发如何排查
React Native 华为HMS地图初始化失败、onMapReady不触发问题排查方案
按优先级从高到低排查以下问题:
- 优先修复依赖版本不匹配问题
你当前RN侧安装的@hmscore/react-native-hms-map@^5.2.0-302对原生地图SDK版本有强绑定要求,手动在app模块build.gradle里写死的com.huawei.hms:maps:5.0.0.300版本比插件适配版本低,会直接导致原生层和JS层桥接失败,onMapReady根本不会注册到原生回调里。先把这行手动加的maps依赖删掉,让RN插件自动拉取匹配版本的原生SDK即可,不要手动指定不匹配的SDK版本。 - 校验签名与鉴权配置
90%的无回调空白问题都是鉴权失败导致的:- 你定义的签名块名为
config,要确认buildTypes下的debug、release两个构建类型都显式指定了signingConfig signingConfigs.config,很多人只定义了签名块没给构建类型引用,debug包默认用Android SDK自带的debug.keystore签名,和AGC控制台登记的签名不一致,直接鉴权失败。 - 用
keytool -list -v -keystore 你的keystore文件路径命令提取签名的SHA256值,和AGC控制台「应用信息」里登记的SHA256、包名逐字核对,一个字符错了就会鉴权失败。
鉴权失败时SDK不会把错误抛到JS层,只会在原生日志里输出错误码,不会触发onMapReady回调
- 你定义的签名块名为
- 抓原生日志定位具体错误
不要只看JS层console输出,连接设备打开Android Studio的Logcat,过滤HMSMap、HMSSDK、agconnect三个关键字,初始化阶段的所有错误都会直接打在日志里,常见错误码对应原因:- 6003:签名指纹和AGC后台配置不一致
- 6004:AppID配置错误、应用未在AGC后台开通地图服务
- 21:缺少网络权限、设备网络不通无法连接华为服务
- 907135003:HMS Core版本过低,需要升级测试设备上的HMS Core到最新版
- 检查Gradle配置顺序问题
- 项目级build.gradle里的华为maven仓库
https://developer.huawei.com/repo/要放在mavenCentral、jcenter等公共仓库的前面,避免拉到错误的依赖包 - app模块里的
apply plugin: "com.huawei.agconnect"必须写在apply plugin: 'com.android.application'的后面,插件顺序错了会导致AGC配置注入失败
- 项目级build.gradle里的华为maven仓库
- 排查组件布局问题
你给HMSMap组件只设置了height:200,没设置宽度,补个width: '100%'的样式,同时检查父容器有没有设置透明度为0、位移偏移、overflow:hidden把组件挤出可视区域,部分版本的地图SDK在组件宽高为0时不会执行初始化逻辑,自然不会触发onMapReady。 - 测试环境校验
如果用非华为品牌的安卓机测试,必须手动安装最新版的HMS Core,设备上没有HMS Core或者版本低于6.0时,5.x版本的地图SDK无法完成初始化。
内容的提问来源于stack exchange,提问作者Ash Archin
相关产品推荐
相关产品推荐

