gpt4 book ai didi

ios - 使用 Cocoapods 管理多个目标的依赖关系

转载 作者:可可西里 更新时间:2023-11-01 03:26:26 24 4
gpt4 key购买 nike

我刚刚开始使用 cocoapods 来管理我的 iOS 项目的依赖关系。目前我正在尝试使用 GHIOSUnit 集成单元测试。我遵循了他们的所有说明并尝试了他们的样本测试,一切都非常有效。

Project Setup 1 enter image description here

但是,当我开始使用我的实际项目文件进行测试时,问题就开始了。

我正在使用 AFNetworking 进行客户端服务器通信,每当我访问名为“CRLClient”的 sharedClient(AFHTTPClient 的包装器)时,它都会给我 undefined symbol 错误。

Undefined symbols for architecture armv7:
"_OBJC_METACLASS_$_AFHTTPClient", referenced from:
_OBJC_METACLASS_$_CRLClient in CRLClient.o
"_OBJC_CLASS_$_AFJSONRequestOperation", referenced from:
objc-class-ref in CRLClient.o
"_OBJC_CLASS_$_AFHTTPClient", referenced from:
_OBJC_CLASS_$_CRLClient in CRLClient.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

管理依赖的pod文件是这样的

workspace 'Storyboards.xcworkspace'
platform :ios, '5.0'
pod 'AFNetworking', '1.1.0'
target :UnitTests, :exclusive => true do
pod 'GHUnitIOS', '0.5.6'
end

实际项目目标构建良好并与 AFNetworking 完美配合。

附言我需要将所有要测试的文件也添加到 UnitTest 目标中。那么在构建阶段添加'Target Dependency'有什么作用呢?

enter image description here enter image description here

简而言之,

  1. 如何在不同的目标之间共享共同的依赖关系?
  2. 如果我仍然必须将每个文件添加到新目标,那么添加目标依赖项到底有什么作用?

最佳答案

通过使用

target :UnitTests, :exclusive => true do
pod 'GHUnitIOS', '0.5.6'
end

你说你想要链接到 UnitTests 目标的唯一库是 GHUnit 主要是说你想要AFNetworking 也被链接。问题是您似乎也在将 AFHTTPClient 子类导入到 UnitTests 中,但它找不到它试图链接到的 AFNetworking 组件。

要解决此问题,您应该能够删除独占调用

target :UnitTests do
pod 'GHUnitIOS', '0.5.6'
end

有了这个,您将仅将 GHUnit 链接到您的 UnitTests 目标,但会将 AFNetworking 链接到两者。 “默认情况下,目标将包括在 block 外部定义的依赖项,除非给出 :exclusive => true 选项。” (来自here)

关于ios - 使用 Cocoapods 管理多个目标的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14581386/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com