Swift Package Manager本地生成二进制包遇XCFramework路径错误求助
如何将本地Swift Package转为二进制XCFramework并通过SPM分发?
是的,你必须手动创建XCFramework——SPM的.binaryTarget只是用来引用已存在的二进制包,不会自动帮你生成或提取二进制产物。下面是完整的操作步骤:
1. 构建XCFramework
首先从你的Swift Package源码构建出多架构的.framework,再合并为XCFramework:
- 先清理旧构建产物:
swift package clean - 构建iOS真机版本(arm64架构):
swift build --configuration release --arch arm64 - 构建iOS模拟器版本(兼容x86_64和arm64):
swift build --configuration release --arch x86_64 --arch arm64 -sdk iphonesimulator - 合并两个
.framework为XCFramework,输出到你的artifacts文件夹:
注:如果你的包支持其他平台(比如macOS、watchOS),需要为对应平台重复构建步骤,再把所有平台的xcodebuild -create-xcframework \ -framework .build/release/Logger.framework \ -framework .build/arm64-apple-ios-simulator/release/Logger.framework \ -output artifacts/Logger.xcframework.framework都加入到-create-xcframework命令中。
2. 修正Package.swift配置
确保.binaryTarget的路径指向你刚生成的XCFramework,示例配置如下:
let package = Package( name: "Logger", products: [ .library(name: "Logger", targets: ["Logger"]), ], targets: [ .binaryTarget( name: "Logger", path: "artifacts/Logger.xcframework" ) ] )
3. 验证二进制包可用性
回到你的示例应用,执行swift package update,或者重新添加这个本地包,确认可以正常导入并使用Logger的API。
内容的提问来源于stack exchange,提问作者eemmrrkk
相关产品推荐
相关产品推荐

