二进制目标与 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.zipXCFramework 版本控制
在文件名和 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 反馈 — 无需本地设置。
此课程中的所有课时
- Package.swift:目标、产品与依赖
- 本地包与功能模块
- 二进制目标与 XCFramework
- 版本管理、冲突解决与 Swift 插件