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

Expo Eject后Android应用无法运行 报package不存在、找不到符号错误

问题背景
  • 这是我开发的首个React Native应用,项目初期因不确定后续所需功能,选择基于Expo Managed工作流开发。后续因需要实现平台特定配置,执行了Expo Eject操作,操作完成后Android端始终无法正常运行,也无法构建可供Google Play上架的安装包。
  • 此前仅使用Expo Managed工作流开发过React Native应用,缺乏Android原生配置相关经验,已尝试全网检索到的各类可行解决方案均未修复问题,目前无从排查。
开发环境
  • Node 16.15.0
  • Npm 8.5.5
  • React 17.0.2
  • React Native 0.68.2
  • Expo SDK 45.0.0
  • Android Studio配置:
    • SDK 33
    • SDK Tools 33
问题表现

执行npx react-native run-android命令时出现大量报错,报错分为两类:error: package android.xxx.yyy not found、error: cannot find symbol。初步推测是Expo eject过程中Android相关配置出现损坏,未在公开渠道找到对应解决方案,可按需补充其他排查信息。

错误日志

因平台字数限制,完整错误日志已上传至公开日志托管平台,典型报错示例如下:

/Users/shendric/Desktop/Palau/PalauApp/node_modules/expo-modules-core/android/src/main/java/expo/modules/apploader/AppLoaderProvider.java:4: error: package android.content.pm does not exist
import android.content.pm.PackageManager;
/Users/shendric/Desktop/Palau/PalauApp/node_modules/expo-modules-core/android/src/main/java/expo/modules/core/interfaces/Package.java:13: error: cannot find symbol
  default List<? extends InternalModule> createInternalModules(Context context) {
                                                               ^
  symbol:   class Context
  location: interface Package

解决方案

这类报错本质是Expo Eject流程未正确同步Android原生工程配置,SDK依赖关联失效,按以下步骤操作即可修复:

1. 修正本地SDK路径配置

打开项目根目录下的android/local.properties文件,确认sdk.dir配置项指向本地Android SDK的实际安装路径,路径不要包含中文、特殊字符或空格,Mac环境默认路径参考:

sdk.dir=/Users/你的系统用户名/Library/Android/sdk

如果该文件不存在,手动新建即可。

2. 对齐编译SDK版本

Expo SDK 45 最高兼容Android SDK 32,本地安装的SDK 33和当前版本不兼容,是触发依赖找不到的核心原因。打开android/build.gradle文件,修改buildscript.ext下的版本配置:

buildscript {
    ext {
        buildToolsVersion = "31.0.0"
        minSdkVersion = 21
        compileSdkVersion = 32
        targetSdkVersion = 32
    }
}

修改完成后打开Android Studio的SDK Manager,补装Android 12 (S) 对应的SDK 32版本、31.0.0版本的Build Tools。

3. 重置原生配置并清理缓存

在项目根目录依次执行以下命令,修复eject流程遗漏的配置项:

# 重装依赖排除node_modules缓存问题
rm -rf node_modules && npm install
# 清理Android构建缓存
cd android && ./gradlew clean && cd ..
# 重新同步Expo原生配置,自动补全缺失的gradle依赖项
npx expo prebuild --platform android

执行prebuild命令时如果提示覆盖现有android目录,选择确认覆盖即可。

4. 校验Gradle JDK版本

打开Android Studio,进入设置页的Build, Execution, Deployment > Build Tools > Gradle选项,将Gradle JDK设置为JDK 11,React Native 0.68.2不兼容JDK 17及以上版本,版本不匹配也会触发类找不到的编译错误。

以上步骤完成后,重新执行npx react-native run-android即可正常调试运行。需要构建Google Play上架包时,进入android目录执行./gradlew bundleRelease即可生成符合要求的AAB安装包。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 10:03:15