【问题标题】:How to add custom project configurations to Xcode when using CocoaPods?使用 CocoaPods 时如何向 Xcode 添加自定义项目配置?
【发布时间】:2015-07-18 03:19:45
【问题描述】:

我有一个 iOS/OS X Xcode 项目,我在其中使用 CocoaPods,我似乎无法弄清楚如何在不完全破坏构建的情况下添加我自己的项目配置(除了调试和发布) .

在项目中,我有许多目标,用于两个平台上的应用程序及其应用程序扩展。 Xcode 工作区当然也有 Pods 项目。

因为该项目为 iOS 和 Mac 构建目标,所以我使用 CocoaPods“目标”将它们的 pod 组合在一起。我的 Podfile 看起来像这样:

source 'https://github.com/CocoaPods/Specs.git'

target :iOS do
  platform :ios, '7.1'
  link_with 'iOS', 'NozbeToday', 'NozbeShare', 'NozbeWatch'

  # pods...
end

target :Mac do
  platform :osx, '10.9'
  link_with 'Mac'

  # pods...
end

现在我遇到了问题。到目前为止,我的项目中只有默认的“调试”和“发布”配置。我想更改它们并为不同的配置文件/捆绑 ID 组合添加一些新的。

……我被困住了。我不知道该怎么做。

问题的第一个迹象是警告pod install 针对每个目标/配置组合喷出:

[!] CocoaPods 没有设置你项目的基本配置 因为您的项目已经有一个自定义配置集。为了 CocoaPods 集成完全可用,请设置基础 目标NozbeTodayPods/Target Support Files/Pods-iOS/Pods-iOS.dev debug.xcconfig 的配置或包括 Pods/Target Support Files/Pods-iOS/Pods-iOS.dev debug.xcconfig 在 您的构建配置。

我不知道这意味着什么以及如何解决这个问题。无论哪种方式,项目都不会构建——在最好的情况下,我会收到一个链接器错误,说它找不到Pods-something.a...

【问题讨论】:

    标签: ios objective-c xcode cocoapods


    【解决方案1】:

    另一种解决方案,无需向任何架构添加显式依赖项,也无需拖放内容:

    使用 CocoaPods 时如何向 Xcode 添加自定义项目配置

    通常,当您将自定义配置添加到您的 xcode 项目(调试和发布除外)时,您应该执行的操作是运行 pod install。这将修复/重新进行 cocoapods 通常所做的更改。

    如何获得CocoaPods did not set the base configuration of your project because...警告

    Info 选项卡下的Configurations 设置上,在项目级别,您需要设置要使用的基本配置(运行 pod install 时生成)

    别忘了告诉 cocoapods 它应该使用什么配置,换句话说map your condfigurations with pods configurations,否则你的编译时间可能会显着增加

    【讨论】:

      【解决方案2】:

      好的,所以在写这个问题的中途,我自己想通了(是的,橡皮闪避)。这是下一代的解决方案:

      本质上,您必须将对 Pods 目标的显式依赖添加到您的应用程序方案中。

      您这样做的方式是:编辑您的应用程序方案,转到构建部分,然后将 Pods 目标添加到您的应用程序目标上方。您应该会看到如下内容:

      它会起作用的。


      至于pod install 上的CocoaPods 警告,您需要使用CP 为您的每个Xcode 配置生成的xcconfig 文件。你这样做的方式是:

      • Pods/Target Support Files 中找到.xcconfig 文件
      • 将它们拖放到 Xcode 项目中的“Pods”组(仅添加参考。请勿复制到目标或添加到构建)
      • 在项目导航器中单击项目,然后选择项目本身(不是目标之一)。转到信息,然后在配置下将正确的 .xcconfigs 设置为“基于配置文件”列中的每个配置和目标。

      您还需要在 Podfile 中使用类似的内容,让 CocoaPods 知道您的哪些 Xcode 配置是“调试”(未优化),哪些是“发布”:

      project '1Nozbe', {
        'iOS 1 Dev Debug' => :debug,
        'iOS 2 Dev AdHoc' => :release,
        'iOS 3 Release Debug' => :debug,
        'iOS 4 Release AdHoc' => :release,
        'iOS 5 Release AppStore' => :release,
      }
      

      与 CocoaPods 不完全相关,但如果你碰巧有 CP 以外的其他(子项目)依赖项,你还需要做两件事:

      • 在子项目目标上添加显式依赖项(如上面的屏幕截图所示)
      • 在您的子项目中重命名/添加配置,使其与您的主项目相同。 (否则,Xcode 只是不知道您的子项目使用哪种配置)

      【讨论】:

      • 在您的子项目中重命名/添加配置,使它们与您的主项目相同。 (否则,Xcode 只是不知道您的子项目使用哪种配置) 您是在参考文档中找到的还是仅凭经验?
      • @Tony 这只是基于反复试验,而不是声称无法完成。
      • [!] xcodeproj 已重命名为 project。请相应地更新您的 Podfile。
      • 我还手动将具有相同名称的相同构建配置添加到 Pods 项目,然后执行pod install。这更新了我的 .xcconfig 文件的名称。然后我添加了答案中提到的更新名称。
      • xcodeproj '1Nozbe', { 'iOS 1 Dev Debug' => :debug, 'iOS 2 Dev AdHoc' => :release, 'iOS 3 Release Debug' => :debug, 'iOS 4 Release AdHoc' => :release, 'iOS 5 Release AppStore' => :release } 就是全部,以防万一有人在 1.0 之后使用 Cocoapods 版本,现在不推荐使用 xcodeproj 名称为 project 谢谢!
      【解决方案3】:

      在配置文件中添加这一行,就像导入头文件一样:

      #include "Pods/Target Support Files/Pods/Pods.debug.xcconfig"
      

      注意:这是#include,而不是#import

      【讨论】:

      • 不再使用较新的 Xcode 版本,有什么解释吗?
      猜你喜欢
      • 2020-02-25
      • 2021-09-03
      • 2011-09-07
      • 1970-01-01
      • 1970-01-01
      • 2016-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多