基于Expo的React Native应用如何集成HMS适配华为设备
Expo React Native 项目集成 HMS 适配华为设备实操方案
基础集成流程
- 首先替换默认的 Expo Go 为
expo-dev-client,HMS 相关原生能力无法在标准 Expo Go 环境中运行,必须自定义开发客户端。 - 注册华为开发者账号,在 AppGallery Connect 中创建和你项目
applicationId/bundleId匹配的应用,下载agconnect-services.json(Android 端配置文件)放到项目根目录。 - 安装 Expo 官方 HMS 配置插件
expo-huawei-agc,该插件会在预构建阶段自动把 HMS 配置、依赖注入到原生工程,无需手动修改原生代码。 - 若要适配定位能力,额外安装
@hmscore/react-native-hms-location插件,保留原有expo-location依赖即可。
定位能力适配方案
你提到的条件分支逻辑是可行的,但是有更易维护的实现方式,不需要在业务代码中重复写判断逻辑:
- 先封装统一的定位抽象层,对外暴露一致的方法接口,比如
getCurrentPosition、watchPosition、stopObserving等。 - 在抽象层内部做运行时环境判断:调用
HmsLocationAvailability.isHmsLocationAvailable()检测当前设备是否有可用的 HMS Core 服务,判断为真则走 HMS Location 相关逻辑,否则 fallback 到expo-location逻辑。 - 业务层直接调用你封装的统一接口即可,完全不需要感知底层实际调用的是哪套定位服务。
补充优化说明
- 不需要针对不同设备拆分打包,一套代码即可同时兼容 GMS 和 HMS 设备,运行时自动切换对应服务。
- 如果你后续还要适配 HMS 其他能力比如推送、地图、支付,都可以用同样的抽象封装思路处理,不需要改动原有业务逻辑。
- 若要上架华为应用市场,需按照平台要求完成权限声明、隐私合规等相关配置。
内容的提问来源于stack exchange,提问作者kaskeeeee
相关产品推荐
相关产品推荐

