使用npx expo run:android构建Android失败,但gradlew构建成功
Expo run:android构建失败但手动执行gradlew成功的排查方案
问题概述
加入现有协作项目后,执行npx expo run:android始终无法完成构建,核心报错:
Error: C:\Users\user\OneDrive\Desktop\react-app\android\gradlew.bat exited with non-zero code: 1
但直接进入android目录执行gradlew --stacktrace可成功构建,同事能正常编译,排除代码层面问题。
已尝试的无效操作:
- 删除android、node_modules、.expo文件夹
- 清理npm/yarn缓存
- 彻底卸载并重装所有开发工具(IDE、SDK、Node、Java、Android Studio等),与同事版本完全一致
排查修复思路
1. 路径特殊字符/权限问题
项目路径包含OneDrive同步文件夹,可能存在权限限制或路径解析异常:
- 将项目复制到本地非同步目录(如
C:\Projects\react-app),重新执行npx expo run:android - 检查项目文件夹权限,确保当前用户拥有完全控制权限
2. Expo CLI与手动执行的Gradle参数差异
Expo run:android会自动传递特定参数给Gradle,可能与手动执行的命令存在差异:
- 执行
npx expo run:android --verbose,查看完整Gradle执行命令,对比手动执行的gradlew --stacktrace差异 - 复制Expo生成的完整Gradle命令手动执行,定位具体参数引发的错误
3. Expo缓存/环境变量异常
- 执行
expo r -c清除项目缓存后重新构建 - 核对系统环境变量
ANDROID_HOME、JAVA_HOME,确保与同事完全一致(路径避免空格,必要时用引号包裹) - 尝试跳过构建缓存:
npx expo run:android --no-build-cache
4. Gradle Daemon状态问题
手动执行成功可能依赖已启动的正常Daemon,而Expo调用时启动了新的异常Daemon:
- 执行
cd android && gradlew --stop停止所有Gradle Daemon,回到项目根目录重新执行npx expo run:android - 查看
~/.gradle/daemon目录下的日志,定位Expo调用时Daemon的具体错误信息
5. Expo CLI版本/依赖冲突
- 执行
npx expo --version查看本地版本,与同事核对一致性 - 尝试使用项目本地CLI执行:
./node_modules/.bin/expo run:android - 核对
package.json中expo、@expo/cli版本,确保与同事完全一致后重新安装依赖
内容的提问来源于stack exchange,提问作者Ari B
相关产品推荐
相关产品推荐

