9

我正在尝试将 Cocoapods 生成的静态库链接到我的工作区中的多个目标。当我这样做时,在构建时的链接阶段会出现重复符号错误。这是有道理的,因为我将库链接了两次。

我该如何解决这个问题?我是否应该只链接到主要目标并在共享目标中包含到 Pod 的标头路径?我将如何在 Cocoapods 中做到这一点?我可以手动设置 Pod 的标题路径,但似乎无法使用pod install.

下面是我的工作空间设置。它由一个主项目和多个静态库组成,作为它们自己的共享代码的 xcode 项目。我将两个静态库项目的产品链接到主目标,它们自动成为主目标的依赖项。

shared1.xcodeproj -> target shared1
shared2.xcodeproj -> target shared2 
main.xcodeproj -> target main

这是我的 Podfile:

workspace 'Main.xcworkspace'
xcodeproj 'Main.xcodeproj'
xcodeproj 'Shared1.xcodeproj'
platform :ios

target :ThirdParty, :exclusive => true do
    link_with ['main', 'shared1']

    pod 'MKNetworkKit'
    pod 'SBJSON'
    ...
end
4

3 回答 3

4

您是否尝试在 podfile 中添加此内容:

link_with 'Target1', 'Target2'

我以这种方式有 5 个不同的目标,而且看起来效果很好。

于 2014-06-19T13:13:01.677 回答
1

我刚刚经历了这种可怕的情况并修复了它 - 我现在有一个工作区,它将通过命令行或 xcode 构建,它有 4 个具有不同捆绑 ID 的不同目标。上述方法的问题在于,您最终会疯狂地链接,因为每个目标都会构建 pod。我所做的是:

  1. 创建具有一个目标和配置的 pod 的项目。
  2. 使用此链接复制目标 3 次并更改捆绑包 ID 等:http: //swwritings.com/post/2013-05-20-concurrent-debug-beta-app-store-builds
  3. 为每个目标创建一个工作区级别方案。
  4. 为您的 pod 构建创建工作区级别方案。
  5. 编辑您的方案并关闭“查找隐式依赖项”。
  6. 使您的方案取决于您的 pod 方案(编辑方案中的构建选项卡)。

我的 podfile 看起来像这样 - 和开始时一样:

target 'test-target' do
    pod 'HockeySDK'
    pod 'RestKit', '~> 0.23.1'
    pod 'RKXMLReaderSerialization', :git => 'https://github.com/RestKit/RKXMLReaderSerialization.git', :branch => 'master'
    pod 'NSLogger'
    pod 'Parse-iOS-SDK'
end

我在构建时确实遇到了很多问题,它一直告诉我它无法链接到我通过将构建设置中的“库搜索路径”更改为解决的 pod 构建:

$(PROJECT_DIR)/Build/Products/$(CONFIGURATION)-$(PLATFORM_NAME)

/Build/Products 有点奇怪,但这似乎是 Pods 开箱即用的做法,如果你反对它,事情就会变得丑陋。

很难写出详细的操作方法,因为我花了 5 天的时间进行实验,才能让神奇的构建在 Xcode、xcodebuild 和我们的 Teamcity CI 服务器中运行。

最后一个问题 - 构建并行化的转变!!!(edit/schemes/build) ... 或者您的 pod 将及时让应用程序构建看到它们

于 2014-06-19T10:12:56.513 回答
0

我遇到过这个。我修复它的方法是删除主项目的依赖项。由于主项目与共享项目链接,它会自动访问依赖项。

workspace 'Main.xcworkspace'
xcodeproj 'Main.xcodeproj'
xcodeproj 'Shared1.xcodeproj'
platform :ios

target :ThirdParty, :exclusive => true do
    link_with ['shared1']

    pod 'MKNetworkKit'
    pod 'SBJSON'
    ...
end
于 2013-11-17T12:01:20.477 回答