【发布时间】:2014-12-14 22:20:13
【问题描述】:
我刚刚升级到 OS 10.10 Yosemite 和 Xcode 6,在构建带有 CocoaPods 依赖项的 iOS 应用时遇到了问题。
完成清理和构建后,我得到一个Apple Mac-O Linker Error,如下所示
Ld /Users/nick/Library/Developer/Xcode/DerivedData/ToWatchList-cesjouowyxujojcvvxsvupagyozc/Build/Products/Release-iphonesimulator/ToWatchList.app/ToWatchList normal i386
cd "/Users/nick/Dropbox/ToWatchList/ToWatchList App"
export IPHONEOS_DEPLOYMENT_TARGET=8.0
export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.1.sdk -L/Users/nick/Library/Developer/Xcode/DerivedData/ToWatchList-cesjouowyxujojcvvxsvupagyozc/Build/Products/Release-iphonesimulator -F/Users/nick/Library/Developer/Xcode/DerivedData/ToWatchList-cesjouowyxujojcvvxsvupagyozc/Build/Products/Release-iphonesimulator -F/Users/nick/Dropbox/ToWatchList/ToWatchList\ App/Pods/CrashlyticsFramework -F/Users/nick/Dropbox/ToWatchList/ToWatchList\ App -filelist /Users/nick/Library/Developer/Xcode/DerivedData/ToWatchList-cesjouowyxujojcvvxsvupagyozc/Build/Intermediates/ToWatchList.build/Release-iphonesimulator/ToWatchList.build/Objects-normal/i386/ToWatchList.LinkFileList -Xlinker -objc_abi_version -Xlinker 2 -ObjC -lPods-AFNetworking -lPods-AuxRepo -lPods-CrashlyticsFramework -lPods-Reachability -lPods-SSKeychain -lPods-SVProgressHUD -lPods-Tapstream -framework CoreGraphics -framework Crashlytics -framework Foundation -framework MobileCoreServices -framework QuartzCore -framework Security -framework SystemConfiguration -framework UIKit -fobjc-arc -fobjc-link-runtime -Xlinker -no_implicit_dylibs -mios-simulator-version-min=8.0 -lz -lPods -Xlinker -dependency_info -Xlinker /Users/nick/Library/Developer/Xcode/DerivedData/ToWatchList-cesjouowyxujojcvvxsvupagyozc/Build/Intermediates/ToWatchList.build/Release-iphonesimulator/ToWatchList.build/Objects-normal/i386/ToWatchList_dependency_info.dat -o /Users/nick/Library/Developer/Xcode/DerivedData/ToWatchList-cesjouowyxujojcvvxsvupagyozc/Build/Products/Release-iphonesimulator/ToWatchList.app/ToWatchList
ld: library not found for -lPods-AFNetworking
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我的项目中似乎有 OTHER_LDFLAGS(其他链接器标志),因为如果我通过转到我的应用程序目标 -> 构建设置 -> 其他链接器标志并重新排序该列表中的项目来重新排序我的 pod,我可以让其他 pod 以相同的方式生成链接器错误(所以至少 AFNetworking 没有问题)。 Cocoapods 和 Xcode 不会产生任何其他错误或警告。
到目前为止我已经尝试过:
更新到最新版本的 Cocoapods:
sudo gem update cocoapods注释掉我的 podfile 中的所有 pod,运行
pod update将它们全部清除,然后取消注释并运行pod update以重新下载并安装所有依赖项。删除我的 pod 文件夹和锁定文件,然后运行
pod install以从头开始重新安装 pod
不幸的是,这些步骤都没有解决这个错误,所以我猜我需要在我的项目中调整一些构建设置,但我不确定下一步该尝试什么。
【问题讨论】:
-
我遇到了同样的问题,并且一直在寻找解决方案。
-
我忘了从 CocoaPods 中读到一条重要的语句,上面写着使用 xcworkspace 文件打开项目,而不是 xcodeproj 文件。这解决了我的问题。
-
@thsorens 很好,很高兴你修复了它。这总是很重要,否则什么都不会起作用,所以感谢您的提醒(尽管这对我来说显然不是问题)。