配置Git-LFS的SPM包引入依赖时报XCBUtil.BinaryReaderError错误2如何解决
SPM集成Git LFS托管的xcframework报错XCBUtil.BinaryReaderError error 2 解决方案
这个错误的核心原因是SPM拉取依赖时,没有获取到xcframework的真实二进制文件,只拿到了Git LFS生成的指针文本,Xcode尝试解析二进制文件失败触发报错。你可以按下面的步骤逐层排查:
1. 校验远端SPM仓库的LFS配置
- 先确认仓库中已正确上传xcframework的真实文件到LFS,而非仅上传了LFS指针:
本地执行临时克隆命令检查:git clone --depth 1 https://github.com/abhisheksaralaya/CCProCalls.git temp_check && cd temp_check
打开xcframework目录下的二进制文件,若内容为以下格式的文本,说明真实文件未推送到LFS:version https://git-lfs.github.com/spec/v1
oid sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
size 123456789 - 若确认为指针文件,执行以下命令推送所有LFS文件到远端:
git lfs push --all origin main
注意将main替换为你的仓库默认分支名。 - 确认仓库根目录的
.gitattributes已正确配置xcframework的LFS匹配规则,示例规则:*.xcframework/** filter=lfs diff=lfs merge=lfs -text
2. 校验本地开发环境的LFS配置
- 先确认本地已安装Git LFS,执行命令验证:
git lfs version
若提示命令不存在,先执行brew install git-lfs安装,之后执行git lfs install全局开启LFS支持。 - Xcode默认使用内置Git,往往不会自动继承系统的LFS配置,需要手动开启Xcode内置Git的LFS支持:
先获取Xcode内置Git的路径:xcrun --find git
用输出的路径执行LFS安装命令,示例:/Applications/Xcode.app/Contents/Developer/usr/bin/git lfs install --global
3. 清理缓存重试
配置修正后,本地之前拉取的坏版本缓存会导致报错持续存在,需要手动清理:
- 关闭Xcode,执行命令清空SPM全局缓存:
rm -rf ~/Library/Caches/org.swift.swiftpm - 清空项目的衍生数据缓存:
rm -rf ~/Library/Developer/Xcode/DerivedData - 若项目下存在
.build目录也一并删除,重新打开Xcode等待SPM重新拉取依赖即可。
特殊情况排查
如果以上步骤操作后仍报错,检查Package.swift的二进制目标配置:
- 确认
binaryTarget的checksum和当前仓库中xcframework的校验和完全匹配,校验和可通过以下命令生成:swift package compute-checksum 你的xcframework本地路径 - 单独将xcframework拖入空项目验证结构是否完整,确认可正常编译后再更新到SPM仓库。
内容的提问来源于stack exchange,提问作者Abhishek J Saralaya
相关产品推荐
相关产品推荐

