You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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文件夹:
    xcodebuild -create-xcframework \
      -framework .build/release/Logger.framework \
      -framework .build/arm64-apple-ios-simulator/release/Logger.framework \
      -output artifacts/Logger.xcframework
    
    注:如果你的包支持其他平台(比如macOS、watchOS),需要为对应平台重复构建步骤,再把所有平台的.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 11:05:19