Android项目Gradle同步失败,报No buffer space available错误求助
解决Gradle同步时"No buffer space available (maximum connections reached?): bind"异常
这个报错本质是本地网络端口被耗尽——Gradle同步时需要建立大量网络连接拉取依赖,当系统可用端口被占满时就会触发这个问题。我之前帮好几个开发者解决过类似问题,给你几个靠谱的解决方案:
1. 清理Gradle缓存并重启相关进程
这是最常用的快速修复手段:
- 完全关闭Android Studio,然后杀掉所有Gradle后台进程:
- Windows:打开命令提示符,输入
taskkill /f /im gradle.exe - Mac/Linux:在终端输入
pkill -f gradle
- Windows:打开命令提示符,输入
- 删除本地Gradle缓存目录:
- Windows:
C:\Users\<你的用户名>\.gradle\caches - Mac/Linux:
~/.gradle/caches
- Windows:
- 重启Android Studio,点击File > Sync Project with Gradle Files重新同步
2. 限制Gradle的并发连接数
通过调整Gradle配置,减少同时发起的网络连接数,避免端口被快速耗尽:
在项目根目录的gradle.properties文件中添加或修改以下配置:
# 调整JVM内存(按需设置,避免内存不足) org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 # 关闭并行构建,减少同时发起的连接 org.gradle.parallel=false # 启用按需配置,降低不必要的资源消耗 org.gradle.configureondemand=true # 限制HTTP/HTTPS最大连接数,避免端口耗尽 systemProp.http.maxConnections=10 systemProp.https.maxConnections=10
3. 检查并释放占用过多端口的进程
有时候是其他程序(比如后台下载工具、代理软件)占用了大量本地端口,导致Gradle无法获取可用端口:
- Windows:打开命令提示符,输入
netstat -ano查看所有端口占用,找到占用大量端口的进程ID(PID),然后在任务管理器中结束该进程 - Mac/Linux:在终端输入
lsof -i -P | grep LISTEN查看端口占用情况,关闭不必要的进程
4. 切换Gradle版本或使用国内镜像源
- 如果是Gradle版本兼容性问题,尝试降级到稳定版(比如7.4.2),在项目根目录的
gradle/wrapper/gradle-wrapper.properties中修改distributionUrl - 换成国内Maven镜像(比如阿里云),减少连接超时和重试导致的端口浪费,在项目根目录的
build.gradle中修改仓库配置:
buildscript { repositories { maven { url 'https://maven.aliyun.com/repository/public' } google() mavenCentral() } // ... 其他原有配置 } allprojects { repositories { maven { url 'https://maven.aliyun.com/repository/public' } google() mavenCentral() } }
如果以上方法都没解决,你可以尝试重启电脑,彻底释放所有占用的端口后再重新同步项目。
内容的提问来源于stack exchange,提问作者Divakar R
相关产品推荐
相关产品推荐

