Flutter启动锁占用问题求助:无法执行flutter pub get等命令
Flutter启动锁错误(错误代码69)解决方案
问题描述
执行flutter pub get或flutter doctor时,系统提示需等待另一个Flutter命令释放启动锁,最终以错误代码69退出,常规方案(杀进程、删锁文件、重装Flutter)无效。
针对性解决方案
排查残留进程
执行以下命令列出所有Dart/Flutter相关进程:ps aux | grep dart ps aux | grep flutter从输出中找到所有关联进程的PID,执行
kill -9 <PID>强制终止,注意需先关闭所有IDE(如Android Studio、VS Code)实例,避免后台进程占用锁资源。修复目录权限
若Flutter目录权限异常,会导致锁文件无法正常释放,执行:sudo chown -R $USER:staff <你的Flutter安装路径>例如Flutter安装在
~/flutter,则命令为sudo chown -R $USER:staff ~/flutter。修正锁函数完整逻辑
仅修改_lock函数不足以解决问题,需同步调整_unlock函数并切换为目录锁:- 打开
<Flutter目录>/bin/internal/shared.sh - 替换
_lock和_unlock函数为:function _lock () { if hash shlock 2>/dev/null; then shlock -f "$1" -p $$ else mkdir "$1" 2>/dev/null fi } function _unlock () { if hash shlock 2>/dev/null; then shlock -u -f "$1" -p $$ else rmdir "$1" 2>/dev/null fi } - 找到文件开头的
LOCKFILE定义,替换为目录路径:LOCKDIR="$FLUTTER_ROOT/bin/cache/lockdir" - 全局替换所有
_lock "$LOCKFILE"为_lock "$LOCKDIR",_unlock "$LOCKFILE"为_unlock "$LOCKDIR"
- 打开
替换系统锁工具
Mac原生flock可能存在兼容性问题,通过Homebrew安装兼容版本:brew install coreutils随后修改shared.sh中依赖
flock的逻辑,将所有flock调用替换为gflock(coreutils提供的兼容锁工具)。
内容的提问来源于stack exchange,提问作者Damien Beauducel
相关产品推荐
相关产品推荐

