flutter, xcode安装升级 & unable to spawn process(Argument list too long)

如题,在xcode安装升级之后,运行项目报错,提示“unable to spawn process(Argument list too long)”

废话不多说,直接说我的解决方法:

升级Mac os,再重新下载xcode,再运行,一切ok。

 

说下我的痛苦经历过程。。。

1、最开始,项目中用到了新的xcode才有的api,导致我拉代码后报错(我的xcode版本低)。

那么,我先要升级xcode,但是磁盘空间不够,总是提示说不够,我清除了电脑上的很多资源(有用的,无用的);

其中最后没有办法,我删除了/Users/mac/Library/Developer/Xcode/DerivedData这个目录下的所有文件。。。

2、清理到磁盘显示有40G剩余,但是还是提示无法下载xcode。。。很奔溃啊。。。;

3、我找到网上的资源,去网上这个地址(https://developer.apple.com/download/more/)下载xcode的各个版本。

 如上图,点击+,展开即可下载。下载--->解压。最后安装,发现仍然报错。。。一万个那啥在飞。。。

4、运行了好多次,还是一样,期间修改了什么Workspace Settings中的配置,什么自定义DerivedData这个路径,

最后发现改来改去,依然没啥用;

5、在网上看到有些朋友说,这个是xcode的一个bug,意思是目录太深了,读取报错。。。好吧,老老实实把项目复制到

mac的根目录,心想,这次应该ok了。。。经过了漫长的索引过程,又经过了漫长的pod过程,我靠,1个小时、2个小时过去了,最后运行又是40分钟。。。

苹果你让我拿什么来爱你。。。最后,依然报错。。。靠

6、最后反复试了好多次,依然无事于补啊。心里那个孤独和寂寞啊。。。

7、愤怒的我,想要怒放的生命。。。好吧,我下载xcode12.5+beta3,真的是满怀期望,心想估计高版本高级一些,可能不存在这个问题;

8、好吧,下载了高版本,又是1个多小时的煎熬(声明下,我这个过程都是在周末的时间搞的,那心里很不是滋味,你说不搞成功吧,周一上班还是要搞,不喜欢拖拉,你说搞吧,周末一个小时一个小时的过。。。心痛。),最后那个包的图标是一个禁止的图标🚫。。。一看,提示说当前os版本太低了,不支持。好吧。。。苹果你玩我。。。

9、我第999次卸载xcode。。。

10、那就硬着头皮升级mac os,好吧我在路边停车,利用车载wifi,升级了mac os。。。喜出望外。又是2个多小时过去了。我还要把空调打开吹着mac,降温。。。

11、升级了mac os之后,我没有到网页上去下载xcode,而是。。。到KFC去点了一个冰淇淋+2个鸡翅,静静的用肯德基的wifi,在App Store上面去下载的xcode。。。注意这里为什么我要去App Store上面下载,因为我发现在网页上下载的同版本的xcode和App Store上面的去对比,App Store上面是识别不到的,那个下载按钮依然是下载按钮,而不是打开。。。后来我意识到这里肯定有鬼,所以赶快买了个冰淇淋压压惊,乖乖的App Store下载xcode。。。

12、好吧,又是2个多小时过去了。。。xcode下载完毕,此时已经到家了,晚上21:40。。。

13、毫无悬念、没有丝毫期待的打开xcode,pod、index。。。1个小时之后。。。弹出了Succeed!没错,成功了。 冰淇淋+鸡翅没白吃。

14、真个mac风格和样式都是新的了,打包成功!瞬间觉得这一切都很美。。。

完结。

 

总结下:

1、这个路径是不是不能彻底删除?(不过删除里面的文件会腾出20+G的磁盘空间,确实很诱人啊)/Users/mac/Library/Developer/Xcode/DerivedData;

2、网页上下载的同一个版本跟App Store里面的不一样?还是建议去App Store上面更新xcode;

3、把项目移到根目录、改变Workspace Settings感觉都没啥效果;

4、真的很耗时。

 

 

<think>我们正在处理用户的问题:“Flutter doctor Error: Unable to determine engine version solution” 根据引用[1][2][3],用户之前遇到了“Unable to find git in your PATH”的错误,但当前问题变成了“Unable to determine engine version”。 然而,引用中并没有直接提到“Unable to determine engine version”的错误。因此,我们需要根据Flutter的常见问题来推测解决方案。 常见原因: 1. Flutter SDK损坏或不完整。 2. 网络问题导致无法下载引擎版本信息。 3. 环境变量配置问题(如git问题,但用户已经解决git问题)。 4. 缓存问题。 解决方案: 步骤1:检查网络连接,确保可以访问flutter服务器(如storage.googleapis.com)。 步骤2:运行`flutter doctor -v`获取详细日志。 步骤3:尝试清除或重置Flutter环境: - `flutter clean` - `flutter upgrade` (升级Flutter到最新版本) 步骤4:如果升级失败,可以尝试重新安装Flutter SDK。 但是,根据引用[3]中提到的git安全目录问题,我们注意到git对Flutter目录的访问权限也很重要。因此,我们也可以尝试将Flutter目录添加到git的安全目录中(尽管该问题原本是解决git不在PATH的问题,但可能权限问题也会影响引擎版本的获取)。 具体步骤: 1. 打开终端(或命令提示符)。 2. 运行以下命令,将Flutter SDK目录添加到git的安全目录(注意替换路径为你的Flutter SDK实际路径): ``` git config --global --add safe.directory <你的Flutter SDK路径> ``` 例如: ``` git config --global --add safe.directory C:/src/flutter ``` 3. 然后再次运行`flutter doctor`。 如果以上步骤不能解决,可以尝试以下步骤: 步骤5:检查Flutter SDK目录的权限,确保当前用户有读写权限。 步骤6:检查Flutter的缓存和临时文件,可以尝试删除`<Flutter SDK目录>/bin/cache`目录,然后运行`flutter doctor`重新生成缓存。 注意:删除缓存目录是安全的,因为`flutter`命令会自动重新下载必要的文件。 步骤7:如果问题仍然存在,考虑重新克隆Flutter仓库: ``` git clone https://github.com/flutter/flutter.git -b stable ``` 然后更新环境变量PATH指向新的Flutter SDK目录。 由于用户之前已经解决了git不在PATH的问题,所以现在的问题可能是由于Flutter缓存损坏或权限问题导致无法确定引擎版本。 我们按照上述步骤给出解决方案。 注意:由于用户的环境可能不同(Windows/Mac/Linux),需要适当调整路径格式。 如果用户是在Windows上,使用PowerShell,那么命令可能是: ``` git config --global --add safe.directory "C:\src\flutter" ``` 在Mac/Linux上: ``` git config --global --add safe.directory "/path/to/flutter" ``` 最后,如果用户遇到模拟器无法启动的问题(如引用[4]),但当前问题是关于引擎版本的,所以先解决引擎版本问题。 生成相关问题: 1. 如何检查Flutter SDK是否完整? 2. 如何清除Flutter的缓存? 3. 如何重新安装Flutter SDK? 4. 为什么需要将Flutter目录添加到git的安全目录? 5. 运行`flutter doctor -v`后如何分析日志?</think>### Flutter doctor 报错:Unable to determine engine version 解决方案 当执行 `flutter doctor` 出现 **"Unable to determine engine version"** 错误时,通常是由于 Flutter SDK 完整性受损或环境配置问题导致引擎版本检测失败。以下是逐步解决方案: --- ### **1. 验证 Flutter SDK 完整性** 首先检查 SDK 是否完整: ```bash flutter doctor -v ``` 观察输出中是否包含 `Bad state: Unable to find git in your PATH` 或文件缺失提示。若存在: - **重新克隆 Flutter SDK**(保留现有配置): ```bash cd <原Flutter目录> git clean -xfd git stash git pull flutter doctor ``` --- ### **2. 修复 Git 安全目录配置** Flutter 依赖 Git 获取引擎版本,需确保 SDK 目录被 Git 信任: ```bash git config --global --add safe.directory <你的Flutter SDK绝对路径> ``` 例如: ```bash git config --global --add safe.directory C:/src/flutter ``` --- ### **3. 清除缓存并强制刷新** 删除缓存文件强制重建: ```bash rm -rf <Flutter目录>/bin/cache flutter doctor -v ``` 此时 Flutter 会自动下载所需依赖。 --- ### **4. 检查网络和代理** 确保可访问 Google 服务(引擎信息从 `storage.googleapis.com` 获取): - 测试连接:`curl https://storage.googleapis.com` - 若有代理,配置环境变量: ```bash export PUB_HOSTED_URL=https://pub.flutter-io.cn export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn ``` --- ### **5. 验证环境变量** 确保 `PATH` 包含: - Flutter 的 `bin` 目录(如 `C:\src\flutter\bin`) - Git 的 `bin` 目录(如 `C:\Program Files\Git\bin`) --- ### **6. 重装 Flutter(最后手段)** 若上述步骤无效: 1. 备份 `flutter/.pub-cache` 目录 2. 删除旧 SDK 并重新安装 3. 恢复备份到新 SDK 目录 --- ### **常见原因总结** | 原因 | 解决方案 | |---------------------|----------------------------------| | SDK 文件损坏 | 重新克隆或清除缓存 | | Git 安全目录未配置 | `git config --add safe.directory` | | 网络阻塞 | 检查代理/镜像配置 | | PATH 缺失关键路径 | 添加 Flutter/Git 到环境变量 | > 引用案例:用户通过添加 Git 安全目录解决类似问题[^3],网络问题也可能导致版本检测失败[^1][^2]。 ---
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值