使用Expo构建React Native应用时Run Gradlew阶段报错求助
Expo构建React Native应用Gradle阶段启动失败问题
错误日志
w: 检测到多个Kotlin守护进程会话,路径为build/kotlin/sessions 本次构建使用了已废弃的Gradle特性,导致无法兼容Gradle 8.0。 可使用'--warning-mode all'参数查看具体废弃警告,判断警告来自自定义脚本还是插件。 本次构建中为确保正确性,已禁用7个无效工作单元的执行优化。 请参考废弃警告了解详细信息。 536个可执行任务:全部执行完成 [stderr] FAILURE: 构建完成但出现2个失败。 [stderr] 1: 任务执行失败。 [stderr] ----------- [stderr] * 问题原因: [stderr] 任务':app:collectReleaseDependencies'执行失败。 [stderr] > java.io.FileNotFoundException: / (是一个目录) [stderr] * 尝试方案: [stderr] > 使用--stacktrace参数获取堆栈跟踪信息。 [stderr] > 使用--info或--debug参数获取更多日志输出。 [stderr] > 使用--scan参数获取完整构建洞察。 [stderr] ============================================================================== [stderr] 2: 任务执行失败。 [stderr] ----------- [stderr] * 问题原因: [stderr] java.lang.StackOverflowError (无错误信息) [stderr] * 尝试方案: [stderr] > 使用--stacktrace参数获取堆栈跟踪信息。 [stderr] > 使用--info或--debug参数获取更多日志输出。 [stderr] > 使用--scan参数获取完整构建洞察。 [stderr] ============================================================================== [stderr] * 查看官方文档获取更多帮助。 [stderr] 构建失败,耗时7分44秒
package.json配置
{"name": "app-name","version": "1.0.1","main": "index.js","scripts": {"start": "expo start --dev-client","android": "expo run:android","ios": "expo run:ios","web": "expo start --web"},"dependencies": {"@expo-google-fonts/spartan": "^0.2.2","@react-native-community/netinfo": "^9.3.5","@react-navigation/bottom-tabs": "^6.3.1","@react-navigation/native": "^6.0.10","@react-navigation/stack": "^6.2.1","@rneui/base": "^4.0.0-rc.4","@rneui/themed": "^4.0.0-rc.4","axios": "^0.27.2","expo": "~46.0.19","expo-document-picker": "~10.3.0","expo-file-system": "~14.1.0","expo-font": "~10.2.0","expo-navigation-bar": "~1.3.0","expo-splash-screen": "~0.16.2","expo-status-bar": "~1.4.0","expo-updates": "~0.14.7","firebase": "9.8.3","react": "18.0.0","react-dom": "18.0.0","react-native": "0.69.6","react-native-bouncy-checkbox": "^2.1.10","react-native-bouncy-checkbox-group": "^0.1.0","react-native-dotenv": "^3.3.1","react-native-dropdown-select-list": "^1.0.18","react-native-elements": "^3.4.2","react-native-gesture-handler": "~2.5.0","react-native-maps": "^1.3.2","react-native-modal": "^13.0.1","react-native-permissions": "^3.3.1","react-native-reanimated": "~2.9.1","react-native-safe-area-context": "4.3.1","react-native-screens": "^3.18.2","react-native-status-bar-height": "^2.6.0","react-native-svg": "12.3.0","react-native-svg-transformer": "^1.0.0","react-native-swiper": "^1.6.0","react-native-vector-icons": "^9.1.0","react-native-web": "~0.18.7","styled-components": "^5.3.5","xlsx": "^0.18.5"},"devDependencies": {"@babel/core": "^7.18.6","metro-react-native-babel-preset": "^0.70.3","react-test-renderer": "18.0.0"},"private": true}
eas.json配置
{"cli": {"version": ">= 3.6.0"},"build": {"development": {"distribution": "internal","android": {"gradleCommand": ":app:assembleDebug"},"ios": {"buildConfiguration": "Debug","resourceClass": "m1-medium"}},"preview": {"distribution": "internal","ios": {"resourceClass": "m1-medium"}},"production": {"ios": {"resourceClass": "m1-medium"}}},"submit": {"production": {}}}
app.json配置
{"expo": {"name": "App Name","slug": "appname","version": "1.0.1","icon": "./assets/images/icon.png","splash": {"image": "./assets/images/splash.png","resizeMode": "contain","backgroundColor": "#FF6B0F"},"android": {"adaptiveIcon": {"foregroundImage": "./assets/images/adaptive-icon.png","backgroundColor": "#fff"},"permissions": ["WRITE_EXTERNAL_STORAGE"],"package": "com.euquero.app"},"assetBundlePatterns": ["**/*"],"packagerOpts": {"config": "metro.config.js","sourceExts": ["js","svg"]},"description": "","extra": {"eas": {"projectId": "24bced36-2rfs-4d11-89e2-19013e1f178f"}}}}
已尝试的解决方案
- 使用
expo upgrade更新所有依赖 - 通过React Native Upgrade Helper执行版本更新
- 清理Gradle缓存:运行
./gradlew clean - 更新build.gradle文件
推荐解决步骤
- 检查路径配置:错误提示
java.io.FileNotFoundException: / (Is a directory),说明构建时试图将根目录当作文件读取。排查所有涉及文件路径的配置(如app.json资源路径、metro.config.js、gradle配置),确保路径指向具体文件而非目录。 - 排查依赖冲突:StackOverflowError通常与递归调用或依赖冲突相关。逐步移除非核心依赖(如xlsx、react-native-swiper等),重新构建定位问题依赖。
- 调整Gradle内存:在
android/gradle.properties中添加或修改以下配置,增大Gradle堆内存:org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 - 重置构建环境:删除
android/build、android/app/build目录,清除node_modules和package-lock.json/yarn.lock,重新安装依赖后再尝试构建。 - 指定Gradle版本:在
android/gradle/wrapper/gradle-wrapper.properties中指定适配RN 0.69.x的稳定Gradle版本(如7.4),避免版本兼容问题。
内容的提问来源于stack exchange,提问作者Brayan Amaral
相关产品推荐
相关产品推荐

