Android Studio终端执行Dart命令打开空文件的问题排查与解决
正如@julemand101所说,无需单独安装Dart SDK,因为Flutter SDK已内置该组件。解决步骤如下:
- 完全卸载单独安装的Dart SDK;
- 在Android Studio的设置 > 语言和框架 > Dart中,将Dart SDK路径指向Flutter SDK内置的Dart SDK;
- 排查发现
C:/Windows/System32目录下存在名为“Dart”的空文件,将其移动至系统其他位置的临时文件夹; - 同时在
C:/Windows/System32中找到名为“Flutter”的空文件,同样移至上述临时文件夹。
至此问题已解决!
作者说明
我可能看起来懂行,但其实大多靠ChatGPT诊断和修复问题:) 已尽量详细描述情况,如需更多信息请告知。
问题描述
新电脑配置Android Studio的Flutter和Dart环境时,在终端执行Dart命令遇到异常:虽然已安装Dart SDK并配置PATH环境变量,但运行dart --version这类命令时,会弹出窗口询问用哪个应用打开一个空文件。
背景信息
- 已下载Flutter SDK,路径为
C:\Users\Acer\Coding\flutter_windows_3.19.5-stable\flutter,能正常新建Flutter项目并在模拟器运行,但终端无法执行Flutter命令(暂时认为是正常情况); - 单独下载了Dart SDK,路径为
C:\tools\dart-sdk; - PATH环境变量已添加Dart SDK目录
C:\tools\dart-sdk; - Android Studio设置 > 工具 > 终端的起始目录为
C:\Users\Acer\StudioProjects\fluttersdkdone; - Android Studio设置 > 语言和框架 > Dart中,曾将Dart SDK路径分别设为
C:\Users\Acer\Coding\flutter_windows_3.19.5-stable\flutter\bin\cache\dart-sdk和C:\Users\Acer\Coding\flutter_windows_3.19.5-stable\flutter; - 可以通过完整路径执行Dart命令,例如
C:\tools\dart-sdk\bin\dart --version能正常返回版本信息。
补充说明
执行Dart命令弹出选择应用窗口时,用写字板、记事本打开该文件均为空;用浏览器打开时,地址指向file:///C:/Windows/System32/dart,在文件资源管理器中找到这个0字节的空文件,直接打开也会弹出相同的选择窗口——终端执行Dart命令时实际是在尝试打开这个空文件。
已多次重启Android Studio和电脑,试过论坛查找类似问题、用ChatGPT排查,重命名该文件会导致终端报错。
曾尝试将Android Studio的Dart SDK路径设为C:\tools\dart-sdk,但重启后会自动重置为C:\Users\Acer\Coding\flutter_windows_3.19.5-stable\flutter\bin\cache\dart-sdk,不过C:\tools\dart-sdk会保留在路径下拉列表中。点击下拉列表旁的“...”按钮想删除其中一个路径,点击“删除”时会提示“确定要删除文件夹‘dart-sdk’吗?”,担心会删除整个文件夹而非仅移除列表项。
规格与版本
- Windows 10:版本10.0.19045 内部版本19045
- 处理器:Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz,2808 MHz,6核,6逻辑处理器
- Dart SDK版本:3.3.3 (stable) (Tue Mar 26 14:21:33 2024 +0000) on "windows_x64"
- Flutter版本3.19.5
- Android Studio Iguana | 2023.2.1 Patch 2
- 版本号#AI-232.10300.40.2321.11668458,构建于2024年4月4日
- 运行时版本:17.0.9+0--11185874 amd64
- 虚拟机:JetBrains s.r.o.的OpenJDK 64-Bit Server VM
- Windows 10.0
- GC:G1 Young Generation,G1 Old Generation
- 内存:2048M
- 核心数:6
- 注册表:ide.experimental.ui=true
- 非捆绑插件:Dart (232.10313)、io.flutter (78.4.1)
内容的提问来源于stack exchange,提问作者ree ree

