我有一个iOS/OS X Xcode项目,我正在使用CocoaPods,我似乎不知道如何在不完全 destruct 构建的情况下添加自己的项目配置(除了调试和发布).

在这个项目中,我有很多目标,针对两个平台上的应用及其应用扩展.Xcode工作区当然也有Pods项目.

因为该项目为iOS和Mac构建目标,所以我使用CocoaPods"目标"将它们的Pod组合在一起.我的播客文件如下所示:

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

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

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

问题的第一个迹象是,每个目标/配置组合都会发出pod install条警告:

[!] CocoaPods没有设置项目的基本配置

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

推荐答案

好吧,写了一半这个问题,我自己就想出来了(耶,橡皮鸭).以下是下一代的解决方案:

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

这样做的方式是:编辑应用程序方案,转到构建部分,将Pods target above添加到应用程序目标中.你应该看到这样的东西:

在此处输入图像描述

它会起作用的.


至于pod install上的CocoaPods警告,您需要使用CP for each Xcode配置生成的xcconfig个文件.你的做法是:

  • 找到那个.xcconfig文件Pods/Target Support Files
  • 将它们拖放到Xcode项目中的"Pods"组(仅添加参考.不要复制到目标或添加到构建)
  • 单击project navigator中的项目,然后 Select 项目本身(而不是目标之一).转到"信息",然后在"配置"下设置右侧.XCconfigm到"基于配置文件"列中的每个配置和目标.

在pod文件中还需要类似的内容,以便cocoapod知道哪些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就不知道在子项目中使用哪个配置)

Objective-c相关问答推荐

使用 NSMutableString 附加到文件的末尾

来自 NSDate 的日期名称?

NSBundle pathForResource 为 NULL

可供学习的 iOS 示例项目

如何可靠地检测 iOS 9 上是否连接了外部键盘?

performSelector 的返回值:

如何在 UICollectionView 中居中行?

捕获组在 NSRegularExpression 中不起作用

动态转发: suppress Incomplete Implementation 警告

将 NSArray 转换为 NSDictionary

关于如何将项目从 UITableView 拖放到 UITableView 的教程

如何为图层 shadowOpacity 设置动画?

我应该使用 NSUserDefaults 还是 plist 来存储数据?

NSAssert vs assert :您使用哪个,何时使用?

为什么 LLDB 不能打印 view.bounds?

获取临时目录中文件的文件路径和 URL

有没有办法在不使用 UINavigationController 的情况下更改 Storyboard 中 UINavigationBar 的高度?

带有Go按钮而不是返回的 iOS 键盘

Xcode 警告未使用属性访问结果 - getter 不应用于副作用

找出用户是否按下了 uinavigationcontroller 中的后退按钮?