惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The GitHub Blog
The GitHub Blog
The Last Watchdog
The Last Watchdog
C
Check Point Blog
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
云风的 BLOG
云风的 BLOG
Google DeepMind News
Google DeepMind News
K
Kaspersky official blog
P
Proofpoint News Feed
Security Latest
Security Latest
The Hacker News
The Hacker News
Simon Willison's Weblog
Simon Willison's Weblog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Security Blog
Microsoft Security Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
Threatpost
WordPress大学
WordPress大学
Project Zero
Project Zero
A
Arctic Wolf
C
Cyber Attacks, Cyber Crime and Cyber Security
L
Lohrmann on Cybersecurity
C
Cybersecurity and Infrastructure Security Agency CISA
I
Intezer
G
GRAHAM CLULEY
A
About on SuperTechFans
S
Securelist
P
Palo Alto Networks Blog
T
Tor Project blog
罗磊的独立博客
C
Cisco Blogs
Microsoft Azure Blog
Microsoft Azure Blog
Know Your Adversary
Know Your Adversary
NISL@THU
NISL@THU
Latest news
Latest news
博客园 - 叶小钗
C
CERT Recently Published Vulnerability Notes
U
Unit 42
AWS News Blog
AWS News Blog
J
Java Code Geeks
小众软件
小众软件
D
Docker
The Cloudflare Blog
Cisco Talos Blog
Cisco Talos Blog
B
Blog
V
Vulnerabilities – Threatpost
V
V2EX
GbyAI
GbyAI
博客园_首页

技术小黑屋

Vibe Coding 的安全风险与应对策略 - 技术小黑屋 Vibe Coding 最佳实践:10 个让开发效率提升 10 倍的关键技巧 一看就会,为 AI 编程 Agent 撸一个 MCP 服务 同样是 Sonnet 4.5,为何 CLI 工具差距这么大 定位 Android 权限声明来源 - 技术小黑屋 Android 升级 targetSDK 35 解决 namespace 问题 使用 grep 查找关键字并显示上下文行 - 技术小黑屋 Android 开发中的三个常见构建错误及解决方案 - 技术小黑屋 使用 flock 解决 Git `unable to read tree` 问题 幂等性的劣化:从数学确定性到 AI 不确定性 - 技术小黑屋 Could not create task ':generateDebugRFile' 问题小记 Android 模拟器实现 hosts 修改 - 技术小黑屋 Vs Code 快速实现 重写 方法 Merge(Pull) Request 推荐的标签列表 - 技术小黑屋 中国特惠!多平台广告屏蔽专家 AdGuard 买断仅需 119 元起 使用 FVM 解决 flutter 3 无法添加 uploader 问题 AAPT2 aapt2-7.2.2-7984345-osx Daemon #5: Idle daemon unexpectedly exit. This should not happen 问题解决 git clone 使用代理,实现百倍加速 - 技术小黑屋 Flutter 处理 Error Setter not found AsciiChar 问题
解决 Android Studio 关闭后终端 flutter run 进程自动结束的问题
androidyue · 2025-09-28 · via 技术小黑屋

在 Flutter 开发过程中,很多开发者遇到一个困扰的问题:当使用终端运行 flutter run 命令进行开发时,一旦关闭 Android Studio 或 IntelliJ IDEA,终端中的 flutter run 进程就会自动结束,导致应用停止运行。本文将详细分析这个问题的原因并提供解决方案。

问题现象

典型场景

  1. 在终端中执行 flutter run 启动 Flutter 应用
  2. 同时打开 Android Studio 进行代码编辑
  3. 关闭 Android Studio 或 IntelliJ IDEA
  4. 终端中的 flutter run 进程自动结束,应用停止运行

影响范围

  • 通过终端启动的 flutter run 进程
  • 相关的热重载功能失效
  • 调试连接中断
  • 需要重新启动应用才能继续开发

问题原因分析

根本原因

当 Android Studio 启动时,它会自动管理 ADB(Android Debug Bridge)服务器的生命周期。默认情况下,IDE 会:

  1. 启动自己的 ADB 服务器实例
  2. 接管现有的调试连接
  3. 在退出时终止所有相关的调试进程

这种设计导致即使是通过终端独立启动的 flutter run 进程,也会因为 ADB 服务器的关闭而被迫结束。

进程依赖关系

1
终端 flutter run → ADB 连接 → Android Studio 管理的 ADB 服务器

当 Android Studio 关闭时,它管理的 ADB 服务器也会关闭,进而导致所有依赖该 ADB 连接的进程(包括终端的 flutter run)都被终止。

解决方案

配置外部 ADB 服务器管理

最有效的解决方案是让 Android Studio 使用外部手动管理的 ADB 服务器,而不是自己管理一个实例:

配置步骤

  1. 打开 Android Studio 设置(Preferences/Settings)
  2. 导航到 Build, Execution, DeploymentDebugger
  3. 找到 Android Debug Bridge (adb) 部分
  4. Adb Server Lifecycle Management 中选择 Use existing manually managed server
  5. 设置 Existing ADB server port5037(默认端口)

android studio adb config

关键配置说明

  • Use existing manually managed server: 告诉 Android Studio 不要自己管理 ADB 服务器,而是使用外部已存在的服务器
  • Existing ADB server port: 指定外部 ADB 服务器的端口(通常为 5037)

这样配置后,Android Studio 不会在启动时接管 ADB 服务器,也不会在关闭时终止它,从而保证终端运行的进程不受影响。

验证配置是否生效

配置完成后,可以通过以下步骤验证:

  1. 在终端启动 flutter run
  2. 打开 Android Studio
  3. 关闭 Android Studio
  4. 检查终端中的 flutter run 是否依然运行

如果 flutter run 进程没有被终止,说明配置成功。

总结

通过配置 Android Studio 使用外部手动管理的 ADB 服务器,可以有效解决 IDE 关闭后终端 flutter run 进程自动结束的问题。这种方法的优势在于:

  1. 进程独立性:终端和 IDE 的调试进程相互独立
  2. 开发效率:无需频繁重启应用
  3. 资源优化:避免不必要的进程重启
  4. 稳定性:减少因 IDE 操作导致的调试中断

推荐所有 Flutter 开发者采用这种配置方式,特别是那些习惯在终端中运行 flutter run 的开发者。