Flutter 3.10.1搭配Xcode14.3后续构建失败,报IDEFoundation相关错误求助
升级Flutter和Xcode版本后,执行flutter clean后的第一次iOS构建可正常完成,但后续所有构建均失败,报错信息如下:
2023-05-18 08:27:33.217 xcodebuild[31393:1782938] Requested but did not find extension point with identifier Xcode.IDEFoundation.IDEResultKitSerializationConverter
xcodebuild: error: Existing file at -resultBundlePath "/var/folders/x3/zv1948355lj7wtrfgg3vbmfr0000gn/T/flutter_tools.bAqZH1/flutter_ios_build_temp_dirbtKo5t/temporary_xcresult_bundle.xcresult"
以下是经过验证的解决方法:
修改Flutter构建脚本自动清理临时结果包
找到本地Flutter SDK目录下的packages/flutter_tools/bin/xcode_backend.sh文件,在执行xcodebuild命令的代码段前,添加清理逻辑:# 清理已存在的结果包文件 if [ -n "$RESULT_BUNDLE_PATH" ]; then rm -rf "$RESULT_BUNDLE_PATH" fi保存文件后重新构建,脚本会在每次构建前自动删除冲突的xcresult文件。
手动指定唯一的结果包路径
构建时通过时间戳生成唯一的临时路径,避免重复冲突:flutter build ios --result-bundle-path "/tmp/flutter_build_$(date +%s).xcresult"时间戳会确保每次构建的结果包路径不重复,从根本上规避文件已存在的错误。
禁用结果包生成
如果不需要生成xcresult结果包,直接在构建命令中关闭该功能:flutter build ios --no-result-bundle该参数会阻止xcodebuild生成结果包,彻底解决路径冲突问题。
清理Xcode和Flutter临时缓存
除了flutter clean,手动清理残留的临时文件:# 清理Xcode派生数据 rm -rf ~/Library/Developer/Xcode/DerivedData # 清理Flutter工具临时目录 rm -rf /var/folders/x3/zv1948355lj7wtrfgg3vbmfr0000gn/T/flutter_tools_*清理完成后重新执行构建,确保没有残留的冲突文件。
内容的提问来源于stack exchange,提问作者habib mohammed

