如何实现Process无窗口运行,解决双击exe执行adb命令弹黑框问题
解决方案
1. 调整编译参数(核心修复)
双击exe弹出黑框的核心原因是Dart/Flutter编译Windows可执行文件时默认使用控制台子系统,调整编译参数切换为GUI子系统即可消除主程序控制台,子进程调用也不会继承弹出黑框:
- 纯Dart项目编译exe时,添加
--windows-subsystem gui参数:dart compile exe --windows-subsystem gui lib/你的入口文件.dart - Flutter Windows项目直接编译release版本即可,release版本默认使用GUI子系统:
flutter build windows --release
2. 优化Process调用逻辑
你原有代码中的runInShell: true也是触发黑框的常见原因,Windows平台下该参数会强制启动cmd.exe作为中间执行层,如果你只是调用独立可执行文件(比如adb)不需要依赖系统shell能力,直接关闭该参数即可:
Process.run( 'adb', ['devices'], // 注意原代码此处存在笔误,缺少年代右引号,已修正 runInShell: false, );
如果业务确实需要使用shell执行命令,配合上面的GUI子系统编译参数,也不会弹出黑框。
补充说明
Android Studio运行时无黑框是IDE的调试特性:IDE会直接捕获程序的控制台输出,不会弹出独立控制台窗口,和发布态编译程序的运行逻辑不同。
内容的提问来源于stack exchange,提问作者jchenx2
相关产品推荐
相关产品推荐

