自定义 Xcode 使用自定义框架和 Cocoapods 构建配置

Custom Xcode Build Configurations with Custom Frameworks and Cocoapods

我有一个项目有一个主要的 iOS 目标,一些源文件在同一个项目中的自定义框架,以及 CocoaPods.

我最近更改了我的 Xcode 构建配置名称并添加了两个以涵盖两个环境(暂存、生产)以及每个环境的调试和发布配置。

暂存和生产的两个目标

每次都必须在保存对话框中检查两个目标,这让我很恼火。我决定只有一个目标但有多个构建配置。令人惊讶的是,您几乎可以使用 Info.plist 文件中的构建配置和变量来完成所有事情。

每个环境两个构建配置

所以我像这样更改了配置:

  1. 我把Debug改成了Debug Staging
  2. 我把Release改成了Release Staging
  3. 我加了Debug Production
  4. 我加了Release Production

我也需要更新方案设置才能使用正确的配置。

由于您更改的是项目中的配置而不是单个目标中的配置,因此所有目标都将获得这些配置。

自定义框架和 Cocoa 的问题Pods

因为我使用的是 CocoaPods,所以我 运行 pod install 也为 Pods 生成配置。它成功了,我可以用不同的配置构建和 运行 我的主要目标。

现在的问题是我既不能再单独构建自定义框架,也不能再构建它们的单元测试。我收到如下错误:

  • Command MergeSwiftModule failed with a nonzero exit code
  • Framework not found "Pods_MyProject"

我已经尝试了从清理派生数据到分解 Cocoa 的所有方法Pods。

事实证明,当没有默认 DebugRelease 配置时,Cocoapods 会以某种方式混淆。在 运行ning pod install 之后,我实际上可以看到 Pods Xcode 项目的 6 个构建配置:

  • Debug
  • Debug Staging
  • Debug Production
  • Release
  • Release Staging
  • Release Production

解决方案

我决定将 DebugRelease 用于生产环境,将 Debug StagingRelease Staging 用于暂存环境。我再次 运行 pod install 并且:问题已解决。我看到 Pods 项目的 4 个构建配置:

  • Debug <-- 生产
  • Debug Staging
  • Release <-- 生产
  • Release Staging

所有自定义框架再次成功构建,我可以再次 运行 我的单元测试。