You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动