ld:使用CocoaPods时未找到架构armv7的符号

时间:2014-01-29 23:03:28

标签: ios xcode maven xcodebuild cocoapods

这只发生在一台Mac mini构建服务器上。它与armv7s有相同的错误。它适用于几个Ubuntu构建代理和我的本地机器(Macbook Pro)。这些服务器都具有相同的功能:

  • XCode版本(5.0)
  • Podfile / Podfile lock
  • Pod缓存(在每台计算机上清除它)
  • Maven版本(3.1.1)
  • Cocoapods版本(0.29.0)

正在使用的pod是TTTAttributedLabel:

[INFO] Undefined symbols for architecture armv7s:
[INFO]   "_kCTUnderlineStyleAttributeName", referenced from:
[INFO]       -[TTTAttributedLabel commonInit] in libPods.a(TTTAttributedLabel.o)

但TTTAttributedLabel并未用作pod,它的源代码直接粘贴到另一个添加到此项目的私有pod中。我不知道为什么我没有开发它,开发人员也没有。 TTTAttributedLabel的来源是以某种方式定制的,所以我觉得改变它并不舒服,因为这是一个生产版本。

所以我有一个主项目,其中包含一个私有pod,它直接在其源代码中包含来自TTTAttributedLabel的代码。

私有pod确实已正确安装。 TTTAttributedLabel文件包含在私有pod的编译源中。 libPods.a似乎在XCode中正确链接。主项目和pod的有效架构都是相同的(armv7和armv7s)。

在过去的约6个小时里,我已经尝试过在互联网上找到的每一个答案。

为什么这台服务器找不到这些符号?为什么它在任何地方都可以工作呢?

2 个答案:

答案 0 :(得分:3)

前几天我有这个,我必须清除缓存,然后运行以下命令重新安装pod:

rm -rf "${HOME}/Library/Caches/CocoaPods"
rm -rf "`pwd`/Pods/"
pod update

然后使用Cmd + Shift + K

清洁工作区

答案 1 :(得分:-1)

问题是cocoapods版本0.23.0(或低于0.29.0)。即使构建服务器有0.29.0,构建实际上是使用Ruby的system()命令在Rails子shell中运行的。这意味着它也使用了Rails包,它只有cocoapods 0.23.0。