文档 · iOS 集成
2. Xcode 项目配置 — 将 xcframeworks 集成到项目中
这里不涉及清单合并或仓库 URL,你需要手动将两个二进制框架集成到 Xcode 项目中(如果团队有配置脚本,也可以通过脚本完成)。
2.1 框架的存放位置
将 AKSKit.xcframework 和 AppsKit.xcframework 直接放在 .xcodeproj 所在的文件夹中,也就是与 Podfile 和应用源码文件夹同级,不要放进源码文件夹或 Pods/ 中。这一点很重要,因为 Xcode 使用不带目录前缀的相对路径解析框架引用(无需自定义 FRAMEWORK_SEARCH_PATHS);如果移动框架,项目文件中的引用就会失效。
plaintext
YourApp/ <- CocoaPods project root (Podfile lives here)
├── Podfile
├── AKSKit.xcframework/ <- sibling of the .xcodeproj
├── AppsKit.xcframework/ <- sibling of the .xcodeproj
├── YourApp.xcodeproj/
├── YourApp.xcworkspace/ <- open THIS, not the .xcodeproj, once Pods are installed
└── YourApp/ <- your app target's source folder
├── AppDelegate.swift
└── ...2.2 将框架添加到 target
在 Xcode 中,选择应用的 target → General(通用) → Frameworks, Libraries, and Embedded Content(框架、库和嵌入内容) → 添加这两个 .xcframework 文件,并分别设置为 Embed & Sign(嵌入并签名)。具体来说,完成后应包含以下配置:
- 每个框架都有一个
PBXFileReference,其中sourceTree = "<group>",且path不带目录前缀 - 两个框架都列在 Link Binary With Libraries(将二进制文件与库链接) 中(即
PBXFrameworksBuildPhase) - 两个框架都列在 Embed Frameworks(嵌入框架) 复制文件构建阶段中(
PBXCopyFilesBuildPhase,dstSubfolderSpec = 10),并带有CodeSignOnCopy和RemoveHeadersOnCopy属性;这正是在 Xcode 界面中选择“Embed & Sign”后生成的配置
同时,确认 LD_RUNPATH_SEARCH_PATHS 包含 @executable_path/Frameworks(通过 Xcode 界面嵌入框架时会自动添加此项,使已嵌入并签名的框架能够在运行时加载)。
如果你通过脚本而非 Xcode 界面进行配置(例如在 CI 配置步骤中),需要向
project.pbxproj添加的正是上述三部分:文件引用、链接阶段和嵌入阶段。
2.3 打开工作区,而不是项目文件
运行 pod install 后,请打开 YourApp.xcworkspace。工作区会将应用的 target 与 CocoaPods 生成的 Pods.xcodeproj 关联起来;如果直接打开 .xcodeproj,构建时将无法正确链接 Podfile 中的依赖。