You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native安卓编译报错ConstantsService未重写getAppScopeKey()方法

React Native安卓端expo-constants编译报错解决方案

报错原因

你遇到的编译错误是expo-constants版本和当前React Native版本不兼容导致的:expo-constants@~11.0.2对应Expo SDK 44,要求React Native版本为0.67+,而你当前使用的React Native 0.66.3对应适配的是Expo SDK 43,配套的expo-constants版本为~10.1.3,版本 mismatch 导致ConstantsInterface接口的抽象方法没有被实现。

解决方案

方案一:降级expo-constants到适配版本(推荐)

这是改动最小的稳定解决方案,操作步骤如下:

  • 卸载当前版本的expo-constants
    如果你用npm:npm uninstall expo-constants
    如果你用yarn:yarn remove expo-constants
  • 安装适配React Native 0.66.3的版本
    如果你用npm:npm install expo-constants@~10.1.3
    如果你用yarn:yarn add expo-constants@~10.1.3
  • 清理缓存后重新构建
    1. 进入安卓项目目录执行清理:cd android && ./gradlew clean
    2. 回到项目根目录启动RN服务并清除缓存:npx react-native start --reset-cache
    3. 重新执行构建命令即可

方案二:手动打补丁适配(临时救急用)

如果你暂时不想调整依赖版本,可以手动修改源码补全缺失的方法,配合patch-package持久化修改:

  • 打开报错的ConstantsService.java文件,在ConstantsService类中添加缺失的方法实现:
    @Override
    public String getAppScopeKey() {
        return null;
    }
    
  • 安装patch-package工具持久化修改:npm install patch-package --save-dev
  • 生成补丁包:npx patch-package expo-constants
    后续重新安装依赖时,补丁会自动生效,无需重复修改源码

方案三:升级整体依赖版本

如果你需要使用expo-constants@11.x的新特性,可以将React Native版本升级到0.67+,同时对齐所有Expo相关依赖到SDK 44的对应版本,该方案改动较大,需要同步处理其他依赖的兼容问题,按需选择即可。

额外说明

提示中提到的「使用或重写了已弃用API」是版本不兼容的附带提示,完成版本对齐后会自动消失,不会影响应用正常运行,暂时可以忽略。

内容的提问来源于stack exchange,提问作者Dorian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:45:06