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

Swift Package Manager如何配置依赖远程XCFramework以降低编译时长

关于SPM直接依赖远程XCFramework的问题解答

首先可以明确,你提到的直接将XCFramework压缩包地址写入.package依赖的写法不可行:SPM 要求.package(url:)参数对应的地址必须是一个包含Package.swift描述文件的Git仓库,无法直接识别单个二进制压缩包作为依赖源。

要实现依赖预编译XCFramework、避免源码编译的需求,有两种成熟的实现方案:

方案1:使用官方提供的二进制SPM仓库

大部分主流第三方SDK官方都单独维护了无源码、仅声明二进制依赖的SPM仓库,你示例中用到的AppsFlyer的依赖地址就是这类仓库,拉取时只会下载对应二进制文件,不会触发编译。
你提到的Facebook、Firebase也均提供了这类官方二进制SPM源,直接替换你现有依赖中的源码仓库地址即可,无需额外改造。

方案2:自建二进制依赖声明仓库

如果对应SDK没有官方提供的二进制SPM源,你可以自行创建一个空的Git仓库,仅在仓库中放置Package.swift文件,通过binaryTarget声明对应远程XCFramework的地址和校验值即可,示例配置如下:

// swift-tools-version:5.3
import PackageDescription

let package = Package(
    name: "FacebookBinary",
    platforms: [.iOS(.v11)],
    products: [
        .library(name: "FacebookCore", targets: ["FacebookCore"]),
        .library(name: "FacebookLogin", targets: ["FacebookLogin"])
    ],
    targets: [
        .binaryTarget(
            name: "FacebookCore",
            url: "https://github.com/facebook/facebook-ios-sdk/releases/download/v11.1.0/FacebookCore.xcframework.zip",
            checksum: "替换为对应zip包的SHA256校验和"
        ),
        .binaryTarget(
            name: "FacebookLogin",
            url: "https://github.com/facebook/facebook-ios-sdk/releases/download/v11.1.0/FacebookLogin.xcframework.zip",
            checksum: "替换为对应zip包的SHA256校验和"
        )
    ]
)

校验和可以通过终端命令计算,执行以下指令即可得到对应压缩包的合法校验值:
swift package compute-checksum 本地下载的XCFramework压缩包路径

配置完成后,你的业务SPM模块直接依赖这个自建的二进制声明仓库即可,拉取依赖时会直接下载预编译的XCFramework文件,全程不会触发源码编译,可大幅降低全量编译耗时。


内容的提问来源于stack exchange,提问作者Sergey Pekar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 20:12:01