You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter应用首次安装正常,重装时报java.net.BindException地址占用错误

问题成因

从报错栈可以看出错误出现在Gradle的FileLockCommunicator初始化阶段,核心原因是Gradle守护进程用于监听文件锁冲突的UDP端口被占用,具体触发场景包括:

  • 上一次运行Flutter项目时Gradle守护进程异常退出,端口资源未被系统回收,重新打包时新启动的Gradle进程无法绑定同一端口
  • 同时运行多个Flutter/Android项目,不同项目的Gradle进程争抢默认端口段
  • 其他第三方软件占用了Gradle默认使用的端口范围
可行解决方案
  • 方案1:终止残留Gradle进程
    Windows系统执行命令:taskkill /F /IM java.exe(若需避免误杀其他Java进程,可先执行netstat -ano | findstr "UDP" 找到对应端口的PID后单独终止)
    macOS/Linux系统执行命令:pkill -f gradle
  • 方案2:重置Gradle缓存与守护进程
    1. 在项目android目录下执行./gradlew --stop 终止当前项目的Gradle守护进程
    2. 删除项目根目录下的.gradle文件夹,可选删除用户目录下.gradle/caches 中的旧版本缓存
    3. 重新执行Flutter运行命令,Gradle会自动初始化新的守护进程并分配空闲端口
  • 方案3:自定义Gradle端口范围(长期解决)
    打开用户目录下的.gradle/gradle.properties 文件(不存在则新建),添加如下配置,指定Gradle使用的端口范围:
    # 自定义文件锁监听端口范围
    org.gradle.cache.locklistener.portRange=50000-55000
    # 自定义守护进程端口范围
    org.gradle.daemon.port=56000-60000
    
    配置后所有Gradle进程都会从指定的空闲端口段分配资源,不会出现端口争抢问题。
  • 方案4:临时关闭Gradle守护进程(应急用)
    运行Flutter项目时添加参数跳过守护进程:flutter run --no-gradle-daemon,该方案会降低每次打包的速度,仅适合临时应急使用。

内容的提问来源于stack exchange,提问作者Ikram Ghalib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 00:36:04