更新cocoa豆荚后xcode重复符号表示体系结构错误

这是我的podFile

 source 'https://github.com/CocoaPods/Specs.git' platform :ios, '7.0' pod 'AFNetworking' pod 'ODSAccordionView', '0.4.4' pod 'IQKeyboardManager' pod 'NYXImagesKit', :git => 'https://github.com/Nyx0uf/NYXImagesKit.git' pod 'PEPhotoCropEditor' pod 'CocoaAsyncSocket' pod 'PKRevealController' pod 'Haneke', '~> 1.0' pod 'MBProgressHUD', '~> 0.9.1' pod 'RadioButton' 

Everythig已经很好地工作了很长时间,但是现在,当我更新我的pods( pod update )时,这3个pod被up upted:

  • AFNetworking
  • CocoaAsyncSocket
  • IQKeyboardManager

在那之后,没有任何作品了。

duplicate symbols for architecture i386错误获得了600多个duplicate symbols for architecture i386 ,如下所示:

 duplicate symbol _OBJC_IVAR_$_AFHTTPRequestOperation._responseSerializer in: /Users/myuser/Library/Developer/Xcode/DerivedData/MyProject-emjexnnjljambodthokzwpwcddhz/Build/Products/Debug-iphonesimulator/libPods-AFNetworking.a(AFHTTPRequestOperation.o) /Users/myuser/Library/Developer/Xcode/DerivedData/MyProject-emjexnnjljambodthokzwpwcddhz/Build/Products/Debug-iphonesimulator/libAFNetworking.a(AFHTTPRequestOperation.o) ... (661 times the same error but pointing to different duplicated files) ld: 661 duplicate symbols for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation) 

有任何想法吗?

编辑:执行下面显示的解决方案后,我的项目只编译iPad Air ,我不能再Archive ,我仍然得到相同的错误…

我使用’手动重命名所有符号’的方法。 我遇到了重复的符号_OBJC_METACLASS_$_PodsDummy_Pods ,所以我在post_install中添加了Podfile以避免重复的符号。

将您的pod文件内容替换为“手动重命名所有符号”

 source 'https://github.com/CocoaPods/Specs.git' platform :ios, '7.0' post_install do |installer_representation| installer_representation.project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] = '$(inherited), PodsDummy_Pods=SomeOtherNamePodsDummy_Pods' end end end pod 'AFNetworking' pod 'ODSAccordionView', '0.4.4' pod 'IQKeyboardManager' pod 'NYXImagesKit', :git => 'https://github.com/Nyx0uf/NYXImagesKit.git' pod 'PEPhotoCropEditor' pod 'CocoaAsyncSocket' pod 'PKRevealController' pod 'Haneke', '~> 1.0' pod 'MBProgressHUD', '~> 0.9.1' pod 'RadioButton' 

已编辑:从项目中删除以下pod项

1. Pods Folder

2. Podfile.lock

3. ProjectName.xcworkspace

然后再次安装pod

此挂钩允许您在生成的Xcode项目写入磁盘之前对其进行任何最后更改,或者您可能要执行的任何其他任务。

参考 –
1. http://www.developerinsider.in/2016/03/14/cocoapods-remove-duplicate-symbols-errors/
2. http://guides.cocoapods.org/syntax/podfile.html#post_install

即使在删除我的pod并重新安装它们之后,我也总是遇到同样的问题。

我终于通过与另一个项目比较找到了解决方案。 问题出在项目构建设置中的参数“Other Linker Flags”(OTHER_LDFLAGS)中。 pod不仅仅通过名称引用,而是通过添加前缀“Pods-myProject”

 "-l\"Pods-myProject-AMSlideMenu\"", "-l\"Pods-myProject-CocoaLumberjack\"", "-l\"Pods-myProject-DLAlertView\"" 

所以我刚刚删除了前缀,一切都是正确的

 "-l\"AMSlideMenu\"", "-l\"CocoaLumberjack\"", "-l\"DLAlertView\"" 

我通过简单地删除然后重新添加pod修复了类似的错误(在一次凌乱的Cocoapods升级之后)。 备份您的项目,然后运行:

 pod deintegrate pod install 

我认为Cocoapods有一个错误,其中pod源文件可能会被意外复制。

我的项目建设正常,直到执行一个pod update ,此时出现重复的符号错误。

在经历了很多混乱之后,我终于发现Google pod最终有两个文件。 就我而言,它是GTMOAuth2SignIn.m和GTMOAuth2SignIn 2.m. 因此,重复的符号错误。

请注意,pod似乎通过通配符引用文件,指示应包含目录中的所有源。 这与显式引用文件的经典Xcode项目不同。

此外,我怀疑在构建过程中执行pod更新可能会使Cocoapods瘫痪。 对同一文件的并发访问可能会导致问题。 只是一个理论。

此外,这可以解释为什么与此问题相关的一些“解决方案”是删除/删除引用的pod,然后重新添加。