将XCFramework作为Swift Package二进制目标时遇文件句柄打开错误
解决Xcode 15 SPM导入大XCFramework时的XCBUtil.BinaryReaderError error 0问题
针对你在Xcode 15.0.1中通过Swift Package Manager(SPM)导入包含大体积(850MB)XCFramework的依赖包时,出现包解析正常但构建失败、报错XCBUtil.BinaryReaderError error 0的问题,以下是可行的解决方法:
清理Xcode与SPM缓存
- 执行
Product > Clean Build Folder(快捷键⇧⌘K)清理本地构建缓存 - 手动删除项目DerivedData目录:打开Xcode偏好设置→Locations,点击DerivedData路径旁的箭头,删除对应项目的缓存文件夹
- 删除SPM全局缓存:删除
~/Library/Caches/org.swift.swiftpm目录,重启Xcode后重新解析依赖包
- 执行
检查并修正SPM包的binaryTarget配置
确保Package.swift中的binaryTarget路径与配置正确,示例如下:binaryTarget( name: "MyFramework", path: "./MyFramework.xcframework" )同时验证XCFramework各架构切片下的文件完整性(比如
ios-arm64_x86_64-simulator/MyFramework.framework内的二进制文件、Info.plist等无损坏)拆分大体积XCFramework
850MB的XCFramework可能触发Xcode 15 SPM的文件处理bug,尝试将其拆分为多个功能独立的小体积XCFramework,在SPM包中分别添加对应的binaryTarget后统一导入使用更换Xcode版本
Xcode 15.0.1存在SPM处理大二进制目标的已知问题,尝试升级至Xcode 15.1及以上版本,或降级至Xcode 14.3.1版本,验证是否能解决构建报错调整XCFramework的链接方式
在Package.swift的binaryTarget中显式指定linkage类型,比如:binaryTarget( name: "MyFramework", path: "./MyFramework.xcframework", linkage: .dynamic )也可尝试设置为
.static,看是否能绕过错误
内容的提问来源于stack exchange,提问作者hungrxyz
相关产品推荐
相关产品推荐

