Xcode 8:找不到用于 pod 的架构 arm64 的符号
Posted
技术标签:
【中文标题】Xcode 8:找不到用于 pod 的架构 arm64 的符号【英文标题】:Xcode 8: Symbol(s) not found for architecture arm64 for pods 【发布时间】:2016-10-05 10:32:05 【问题描述】:更新到 Xcode 8 后,该应用程序将无法在设备上运行,只能在模拟器上运行。添加到项目中的所有 pod 都会引发错误:
Undefined symbols for architecture arm64:
"_OBJC_CLASS_$_AFNetworkReachabilityManager", referenced from:
objc-class-ref in FeedViewController.o
"_OBJC_CLASS_$_TSMessage", referenced from:
l_OBJC_$_CATEGORY_TSMessage_$_Override in NotificationMessenger.o
objc-class-ref in NotificationMessenger.o
"_OBJC_CLASS_$_AFHTTPRequestSerializer", referenced from:
objc-class-ref in HTTPSessionTask.o
"_OBJC_CLASS_$_AFJSONRequestSerializer", referenced from:
objc-class-ref in HTTPSessionTask.o
"_OBJC_METACLASS_$_SWTableViewCell", referenced from:
_OBJC_METACLASS_$_MessagesCell in MessagesCell.o
_OBJC_METACLASS_$_PaymentMethodCell in PaymentMethodCell.o
_OBJC_METACLASS_$_SwipeTitleCell in SwipeTitleCell.o
"_OBJC_CLASS_$_FBRequestConnection", referenced from:
objc-class-ref in FacebookManager.o
"_OBJC_CLASS_$_SWTableViewCell", referenced from:
_OBJC_CLASS_$_MessagesCell in MessagesCell.o
_OBJC_CLASS_$_PaymentMethodCell in PaymentMethodCell.o
_OBJC_CLASS_$_SwipeTitleCell in SwipeTitleCell.o
"_OBJC_CLASS_$_FBRequest", referenced from:
objc-class-ref in FacebookManager.o
"_OBJC_CLASS_$_AFURLSessionManager", referenced from:
objc-class-ref in HTTPSessionTask.o
"_OBJC_CLASS_$_Branch", referenced from:
objc-class-ref in MyImpactViewController.o
objc-class-ref in UINavigationController+Activity.o
objc-class-ref in AppDelegate.o
"_OBJC_CLASS_$_FBSession", referenced from:
objc-class-ref in FacebookManager.o
objc-class-ref in ExternalFacebookCommand.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
对于每个文件,也会抛出此警告:
file was built for archive which is not the architecture being linked (arm64)
活动架构没问题,我尝试删除派生数据文件夹,重新安装 pod,将“仅构建活动架构”设置为“是”和“否”,但没有任何效果。
我的 Podfile 看起来像这样:
platform :ios, '8.0'
workspace 'Purple'
target 'Purple' do
pod 'AFNetworking', '2.6.3'
pod 'SAMKeychain', '~> 1.3'
pod 'TSMessages'
pod 'Facebook-iOS-SDK', '~> 3.23.2'
pod 'SWTableViewCell'
pod 'CardIO'
pod 'Parse'
pod 'PureLayout'
pod 'Branch'
pod 'DZNEmptyDataSet'
end
【问题讨论】:
你能显示你的podfile吗 我已经在问题中添加了 podfile。 试试这个pod AFNetworking', '~> 3.1.0'
和pod install
,更多参考请看这个github.com/AFNetworking/AFNetworking/blob/master/…
尝试更新 pods
我已经更新了 pod,但由于一些旧代码,我必须保留旧版本的 AFNetworking。如您所见,问题不仅仅在于 AFNetworking。
【参考方案1】:
尝试清除 XCode 缓存:
rm -rf ~/Library/Developer/Xcode/DerivedData/
清除 CocoaPods 缓存并重新安装依赖项:
rm -rf "$HOME/Library/Caches/CocoaPods"
rm -rf "`pwd`/Pods/"
pod update
最后转到“Pods”项目并将“仅构建活动架构”设置为“否”以进行“调试”配置。
参考 https://***.com/a/37930840/1773009
【讨论】:
这对我有帮助:最后转到“Pods”项目并将“仅构建活动架构”设置为“调试”配置。【参考方案2】:“OPN [Debug] 目标会覆盖 OTHER_LDFLAGS 构建设置”。这是主要问题。在其他链接器标志的新行中添加 $(inherited) 后解决了我的问题。
【讨论】:
【参考方案3】:请使用下面的 pod 代码。
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, ‘9.0’
use_frameworks!
target “NoteCheck” do
pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :tag => ‘4.0.1’
pod 'AlamofireNetworkActivityIndicator', '~> 2.0'
pod 'AlamofireObjectMapper', '~> 4.0.0'
pod 'UIActivityIndicator-for-SDWebImage', '~> 1.2'
pod 'SVProgressHUD' ,:git => 'https://github.com/SVProgressHUD/SVProgressHUD.git'
pod 'Reachability', '~> 3.2'
pod 'SwiftyJSON', '~> 3.0.0'
pod 'ObjectMapper' , '~> 2.0'
pod 'SDWebImage', '~> 3.8'
pod 'SZTextView', '~> 1.2'
pod 'TPKeyboardAvoiding', '~> 1.3'
pod 'FXBlurView' , '~> 1.6.4'
pod 'AMSmoothAlert', '~> 1.0'
pod 'DGElasticPullToRefresh', '~> 1.1'
end
//部分cocoapod库支持最低IO9.0支持。所以尝试将最小部署目标设置为 9.0 并检查所有 cocoapod swift3.0 支持的库。编辑 pod 文件后,更新 pod。
【讨论】:
为了快速,我们应该使用 Alamofire。或者你也可以使用 AFNetworking。 不能解决问题。以上是关于Xcode 8:找不到用于 pod 的架构 arm64 的符号的主要内容,如果未能解决你的问题,请参考以下文章
UIFoundation 2 片架构 arm64 错误 Xcode 7.3