Dart代码在Android模拟器中长时间无法运行该如何解决?
我打开Android模拟器后开始运行Dart代码,了解到该过程耗时较长,因此等待了约5-6小时,但代码始终无法正常运行
问题原因与排查解决方法
注:正常Dart/Flutter项目运行到Android模拟器的耗时最多不超过10分钟,等待数小时无响应必然是某个环节卡死,无需继续无意义等待
常见触发原因
- 模拟器配置异常:未开启硬件加速(Intel HAXM/AMD虚拟化),分配的CPU、内存资源不足,或者系统镜像文件损坏,导致模拟器本身无法正常加载运行产物
- 编译链配置错误:Flutter/Dart SDK版本与项目依赖不兼容,Android Build Tools版本不匹配,项目存在未解决的依赖冲突,导致编译过程直接卡死
- 调试通信异常:ADB调试桥、Dart调试服务默认使用的5037、8080等端口被其他进程占用,IDE、编译服务、模拟器三者之间无法正常通信
- 项目本身问题:代码存在死循环、异常初始化逻辑,或者首次运行需要拉取的远端资源无法访问,导致启动过程卡在初始环节
分步排查方案
- 验证模拟器可用性
单独启动Android模拟器,不运行Dart代码,检查能否正常进入系统桌面、操作无明显卡顿。如果模拟器本身运行异常,先调整配置:分配至少2核CPU、4G运行内存,开启硬件加速,配置无误仍卡顿的话删除原有镜像,重新下载创建新的模拟器镜像。 - 检查编译环境配置
终端执行flutter doctor(Flutter项目)或dart --version(纯Dart Android项目),确认环境依赖无报错。再手动执行编译命令,Flutter项目运行flutter build apk --debug,看编译过程是否输出报错、能否正常生成编译产物,排除SDK不兼容、依赖冲突问题。 - 排查调试通信问题
执行adb devices确认模拟器被ADB正常识别,识别失败的话依次执行adb kill-server、adb start-server重启ADB服务。检查5037、8080等常用调试端口是否被其他进程占用,占用的话结束对应进程,或者修改IDE的调试端口配置。 - 定位项目层面问题
新建空的Dart/Flutter示例项目,运行到当前模拟器上,如果示例项目可正常运行,说明原有项目存在代码或配置问题,逐行排查项目初始化逻辑、第三方依赖引入即可。
内容的提问来源于stack exchange,提问作者abhaysing patil
相关产品推荐
相关产品推荐

