Ubuntu运行React Native应用遇Gradle文件访问超时错误求助
Hey there, as a fellow React Native developer, I’ve run into this exact Gradle timeout issue before—let’s break down what’s going on and how to fix it!
问题原因分析
- 网络下载限制:默认Gradle的下载源在海外,国内网络环境下下载速度极慢,超过了Gradle的默认超时阈值,导致等待超时。
- 文件权限不足:你的用户账户可能没有对
/home/ankit/.gradle/wrapper/dists/gradle-5.4.1-all/3221gyojl5jsh0helicew7rwx/目录的读写权限,无法完成文件的下载或验证操作。 - 损坏的缓存文件:之前的下载尝试可能生成了不完整或损坏的
gradle-5.4.1-all.zip文件,导致Gradle反复读取失败,触发超时提示。 - Gradle配置未优化:项目默认的Gradle Wrapper既没有设置足够长的超时时间,也没有使用国内镜像源加速下载。
具体解决方法
方法1:手动替换Gradle压缩包
- 先删除已损坏的缓存文件:
rm -rf /home/ankit/.gradle/wrapper/dists/gradle-5.4.1-all/3221gyojl5jsh0helicew7rwx/ - 手动下载完整的
gradle-5.4.1-all.zip(优先选择国内镜像源的资源,比如阿里云镜像) - 将下载好的zip文件放到刚才删除的目录中:
/home/ankit/.gradle/wrapper/dists/gradle-5.4.1-all/3221gyojl5jsh0helicew7rwx/ - 重新运行命令:
react-native run-android
方法2:优化Gradle配置加速下载
- 打开项目目录下的
rdvTemp/android/gradle/wrapper/gradle-wrapper.properties,修改distributionUrl为国内镜像地址:distributionUrl=https://mirrors.aliyun.com/maven/gradle/gradle-5.4.1-all.zip - 打开
rdvTemp/android/build.gradle,替换默认仓库为国内镜像:buildscript { repositories { maven { url 'https://mirrors.aliyun.com/maven/' } google() jcenter() } // 保留原有的dependencies内容 } allprojects { repositories { maven { url 'https://mirrors.aliyun.com/maven/' } google() jcenter() } } - 在
rdvTemp/android/gradle.properties中添加超时配置:org.gradle.timeout=1200000 # 设置为20分钟,可根据需要调整 org.gradle.jvmargs=-Xmx1536M org.gradle.daemon=true
方法3:修复目录权限
- 执行命令修改
.gradle目录的归属权限,确保当前用户拥有完全读写权限:sudo chown -R ankit:ankit /home/ankit/.gradle/ - 权限修复完成后,重新运行
react-native run-android
方法4:清理缓存后重新下载
- 进入项目的android目录,执行清理命令:
cd rdvTemp/android && ./gradlew clean - 删除Gradle全局缓存:
rm -rf /home/ankit/.gradle/caches/ - 回到项目根目录,重新运行打包命令:
react-native run-android
内容的提问来源于stack exchange,提问作者Ankit Kumar




