开启热点运行Flutter应用报Gradle assembleDebug失败退出码1
报错原因
开热点时触发该Gradle报错的核心原因是:系统开启移动热点时会生成专属虚拟网卡,且默认将该虚拟网卡的网络优先级调到最高;Gradle启动守护进程时会默认绑定当前优先级最高的网卡地址,而热点虚拟网卡刚启动时网络栈未完成初始化、无有效可用的IP与网关配置,会导致Gradle守护进程启动后立刻崩溃,最终返回「第一个守护进程结果为空」的报错。
解决方法
按操作复杂度从低到高尝试以下方案:
- 强制Gradle使用IPv4回环地址,避开热点虚拟网卡
打开项目路径下的android/gradle.properties文件,找到org.gradle.jvmargs配置项,在参数末尾追加-Djava.net.preferIPv4Stack=true,示例配置如下:org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 -Djava.net.preferIPv4Stack=true注意:不要重复声明
org.gradle.jvmargs配置项,否则会出现参数覆盖失效的问题。 - 清理异常残留的Gradle进程与构建缓存
完全关闭Android Studio、Flutter调试进程后,在项目的android目录下打开终端,执行如下命令停止所有残留的Gradle守护进程:
回到项目根目录执行# Windows系统执行 gradlew --stop # macOS/Linux系统执行 ./gradlew --stopflutter clean,清理完旧的构建缓存后再重新尝试构建。 - 调整系统网卡优先级(Windows用户适用)
打开「控制面板 > 网络和共享中心 > 更改适配器设置」,按Alt键呼出顶部菜单栏,依次点击「高级 > 高级设置」,在「适配器和绑定」标签页的连接列表中,将日常联网使用的物理网卡/无线网卡拖动到列表最顶部,将热点对应的虚拟网卡拖动到靠后位置,保存设置后重启系统即可生效。 - 临时规避方案
如果上述配置修改后仍偶发报错,可以先关闭热点,等待flutter run完成Gradle构建、应用成功安装到调试设备后,再开启热点完成WiFi配对调试,构建完成后开启热点不会影响已建立的调试连接。
内容的提问来源于stack exchange,提问作者Hadi Hawi
相关产品推荐
相关产品推荐

