Apps Kit SDK logoApps Kit SDK
文档 · 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 中声明的依赖。