Xcode 椰子荚-Flurry&;TestFlight-架构的未定义符号
我正在升级我的项目以使用Cocoapods,当我尝试为iOS设备或模拟器构建项目时,我得到:Xcode 椰子荚-Flurry&;TestFlight-架构的未定义符号,xcode,linker-errors,flurry,testflight,cocoapods,Xcode,Linker Errors,Flurry,Testflight,Cocoapods,我正在升级我的项目以使用Cocoapods,当我尝试为iOS设备或模拟器构建项目时,我得到: Undefined symbols for architecture armv7: "_OBJC_CLASS_$_TestFlight", referenced from: objc-class-ref in PhotoPreviewViewController.o "_OBJC_CLASS_$_Flurry", referenced from: objc-class-r
Undefined symbols for architecture armv7:
"_OBJC_CLASS_$_TestFlight", referenced from:
objc-class-ref in PhotoPreviewViewController.o
"_OBJC_CLASS_$_Flurry", referenced from:
objc-class-ref in MyAppDelegate.o
objc-class-ref in InitialSetupViewController.o
objc-class-ref in InitialDownloadViewController.o
objc-class-ref in HistoryViewController.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
(当然,架构不同)
在“linkbinary With Libraries”下,libPods.a
是黑色的,所以我认为没有任何问题。它还为它们两个都做了自动完成,所以我不确定为什么它在编译时找不到它们
有什么建议吗?我发现这个问题有几个原因:
希望这对我有帮助。以下几点对我有用:
在生成设置中,不要覆盖“其他链接器标志”。如果它是粗体,选择它并按backspace,它应该返回到正常状态。如果未修复,请删除所有标志,移除并重新安装POD,这应该会修复它。Cocoapods由于某些原因,在TestFlight目标中不包括
libTestFlight.a
。因此,要解决此问题,每次运行pod install
,您必须:
Pods.xcodeproj
项目中打开Pods TestFlightSDK
目标构建阶段
选项卡libTestFlight.a
到linkbinary With Libraries
下拉列表libTestFlight.a
可以在您的[$SRCROOT]/Pods/TestFlightsSDK
文件夹中找到
对Flurry也这样做,你就可以开始了
2014年5月1日更新
“缺少库集成”似乎是使用--no integrate
标志的症状(例如,pod安装--no integrate
)
为了让生活更轻松,我编写了一个脚本,在运行pod(更新|安装)-无集成后自动添加库
根据需要进行调整,并将其添加到pod文件的底部
:
# Use post_install to automatically include required libraries
post_install do |installer_representation|
installer_representation.project.targets.each do |target|
if target.name == 'Pods-TestFlightSDK'
libFile = installer_representation.project.new_file('TestFlightSDK/libTestFlight.a')
end
if target.name == 'Pods-Brightcove-Player-SDK'
libFile = installer_representation.project.new_file('Brightcove-Player-SDK/Library/libBCOVPlayerSDK.a')
end
unless libFile.nil?
puts " - Adding %s to %s Frameworks Build Phases" % [libFile, target.name]
target.frameworks_build_phase.add_file_reference(libFile)
end
end
end
听起来你的标题搜索路径有问题。仔细检查您的目标是否与Pods.xcconfig中的相同。我使用的是$(继承的)
,因此它也会提取所有Pods.xcconfig搜索路径。我也遇到了这个问题,只是从Cocoapods中删除了Testflight、Flurry和Parse。不值得头痛去工作。我也是这么做的。但愿我能把它放在椰子荚里。有个解决办法!请参阅我的答案,以解决问题,同时保持Cocoapod支持。这似乎对Flurry不起作用。我仍然得到未定义的符号,也许Flurry是另一个问题。请发布一个新的问题和您的具体情况。这个解决方案对我来说非常有用。我建议@s73v3r创建示例项目,并只集成flurry和add-libFlurry。我没有集成testflight库。就是这样!非常感谢!!还要确保检查“库搜索路径”生成设置。这对我来说是个问题,这很有效。从来都不知道可以点击backspace删除覆盖。起初,我只是删除了那里的“-ObjC”,它是空白的。显然,“空白”并不意味着“默认”,这并不能真正解释为什么这会解决问题。可能存在编辑或添加其他链接器标志的正当理由。至少在TestFlight的情况下,这可能会解决问题的原因是它确保了-lTestFlight是链接器标志的一部分。如果您需要自定义链接器标志,请确保TestFlight中有此标志。这永远是我自己愚蠢的提醒。非常感谢。