0Pricing
Swift Academy · 课时

二进制目标与 XCFramework

将闭源代码作为 XCFramework 分发,并作为二进制目标使用。

二进制目标与 XCFramework 是 CoddyKit 上的免费 Swift Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Swift Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Swift Academy 课程共包含 4 节课。

什么是二进制目标

二进制目标分发预编译框架(XCFramework)而不是源代码,从而保护专有实现。

// Package.swift:
.binaryTarget(
  name: "ClosedSDK",
  path: "Frameworks/ClosedSDK.xcframework"
)

什么是 XCFramework

XCFramework 会将多个平台切片(iOS、macOS、模拟器)打包到一个可分发的归档中。

// XCFramework structure:
// ClosedSDK.xcframework/
// ├── ios-arm64/
// ├── ios-arm64_x86_64-simulator/
// └── macos-arm64_x86_64/

创建 XCFramework

为每个平台构建归档,然后使用 xcodebuild -create-xcframework 将它们合并。

xcodebuild archive -scheme MySDK -destination "generic/platform=iOS" -archivePath ios.xcarchive SKIP_INSTALL=NO
xcodebuild archive -scheme MySDK -destination "generic/platform=iOS Simulator" -archivePath sim.xcarchive SKIP_INSTALL=NO
xcodebuild -create-xcframework \
  -framework ios.xcarchive/Products/Library/Frameworks/MySDK.framework \
  -framework sim.xcarchive/Products/Library/Frameworks/MySDK.framework \
  -output MySDK.xcframework

带校验和的远程二进制目标

使用 SHA-256 校验和引用远程托管的 XCFramework zip 压缩文件,以验证其完整性。

.binaryTarget(
  name: "ClosedSDK",
  url: "https://cdn.example.com/ClosedSDK-1.0.0.xcframework.zip",
  checksum: "abc123def456..."
)

计算校验和

使用 swift package compute-checksum 为 zip 文件生成 SHA-256 校验和。

swift package compute-checksum ClosedSDK-1.0.0.xcframework.zip
# Outputs: abc123def456...

在应用中使用二进制目标

像源代码目标一样,将二进制目标作为依赖项添加到另一个目标的 dependencies 列表中。

.target(
  name: "MyApp",
  dependencies: [
    .target(name: "ClosedSDK")
  ]
)

导入 XCFramework

在 Swift 代码中像导入其他模块一样导入该模块。

import ClosedSDK

let result = ClosedSDK.ProcessData(input: myData)

隐私清单要求

Apple 要求在 App Store 上分发的 XCFramework 包含 PrivacyInfo.xcprivacy 清单,其中列出所使用的 API。

// ClosedSDK.xcframework/
// ├── ios-arm64/ClosedSDK.framework/
// │   └── PrivacyInfo.xcprivacy
// └── ...

调试构建与发布构建

使用 XCFramework 时,您无法在调试器中逐步查看源代码,只能看到符号。您可以将 dSYM 文件一并打包,以便进行崩溃符号解析。

// Distribute dSYMs alongside XCFramework for crash reporting:
// ClosedSDK-1.0.0.xcframework.zip
// ClosedSDK-1.0.0.dSYM.zip

XCFramework 版本控制

在文件名和 SPM 包版本中使用语义化版本控制,以确保使用者可以固定到兼容的版本。

// ClosedSDK-1.2.0.xcframework.zip
// In Package.swift:
// .package(url: "...", from: "1.2.0")

XCFramework 与源代码包

对于专有代码、大型预编译 SDK 或 C/C++ 封装,请使用 XCFramework。对于开源 Swift 代码,请使用源代码包。

// XCFramework: proprietary analytics SDK, vendor-provided libraries
// Source: open-source Alamofire, SwiftUI components

快速检查

在 Package.swift 中声明远程二进制目标时,为什么要包含校验和?

课程回顾

二进制目标可以在不提供源代码的情况下分发预编译的 XCFramework。使用 xcodebuild -create-xcframework 进行构建,托管 zip 文件,使用 swift package compute-checksum 计算其校验和,然后在 Package.swift 中声明它。提交到 App Store 时,请包含 PrivacyInfo.xcprivacy。

常见问题解答

「二进制目标与 XCFramework」课时是免费的吗?

是的 — 「二进制目标与 XCFramework」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Swift Academy 课程的其余内容,请升级到 CoddyKit PRO。 Swift Academy 课程共包含 4 节课。

「二进制目标与 XCFramework」这节课中我会学到什么?

将闭源代码作为 XCFramework 分发,并作为二进制目标使用。 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Swift Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Swift Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「二进制目标与 XCFramework」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Swift Academy 课中编写并运行代码吗?

能。每节 Swift Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. Package.swift:目标、产品与依赖
  2. 本地包与功能模块
  3. 二进制目标与 XCFramework
  4. 版本管理、冲突解决与 Swift 插件
← 返回 Swift Academy