2015-09-16 2 views
5

Вот мой podFile:Xcode дублированные символы ошибки архитектуры после обновления стручков какао

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 работает нормально в течение длительного времени, но теперь, когда я обновляю свои стручки (pod update) эти 3 стручков получить uptated:

  • AFNetworking
  • CocoaAsyncSocket
  • IQKeyboardManager

После этого ничего не работает.

я получаю более 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) 

Любые идеи?

EDITED: После этого решение будет показано ниже, мой проект компилируется только для iPad Air и я не могу Archive больше, я все еще получаю ту же ошибку ...

+0

Вы пытались удалить полученные данные и очистить проект? – Templar

ответ

8

Я использую «вручную переименовать все из Подход символов. Я испытывал дубликат символа _OBJC_METACLASS_$_PodsDummy_Pods, и поэтому я добавил post_install в Podfile, чтобы избежать дублирования символа.

Замените содержимое файла стручок с этим, чтобы «вручную переименовать все символы»

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' 

Отредактировано: Удалить следующий пункт стручок от вашего проекта

1. Pods Folder

2. Podfile.lock

3. ProjectName.xcworkspace

А затем установить стручки снова

This hook allows you to make any last changes to the generated Xcode project before it is written to disk, or any other tasks you might want to perform.

Ссылка -
1. http://www.developerinsider.in/2016/03/14/cocoapods-remove-duplicate-symbols-errors/
2. http://guides.cocoapods.org/syntax/podfile.html#post_install

+0

Я получаю эту ошибку: '[!] Произошла ошибка при обработке крюка после установки подфайла. undefined method project for # ' – Ale

+1

удалить из вашего проекта следующие элементы элемента: ' 1. Pods Folder' '2. Podfile.lock' '3. ProjectName.xcworkspace' И снова установите стручки –

+1

Это был ключ! удаляя файлы и снова устанавливая контейнеры. Кстати, мне также пришлось сменить 'project' на' pods_project'. Спасибо, что это работает сейчас :) – Ale

6

Даже после удаления моих стручки и переустановить их, я всегда была такая же проблема.

Я, наконец, нашел решение, сравнив его с другим проектом. Вопрос был в параметре «Другие флаги компоновщика» (OTHER_LDFLAGS) в Параметры проекта проекта.Стручки сослались не только по имени, но путем добавления префикса «Бобы-MyProject»

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

Так что я просто удалил префикс и все правильно

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

Спасибо человек.Перед тем, как вы это делали. – Nirmalsinh

+0

Я рад, если это помогло вам @Nirmalsinh – Omaty

+0

Да, ваш ответ полезен для меня. – Nirmalsinh

3

Я установил подобную ошибку (после беспорядочного обновления Cocoapods), просто удалив и снова добавив стручки. Резервное копирование вашего проекта, а затем запустить:

pod deintegrate 
pod install 
0

Я думаю Cocoapods есть ошибка, где исходные стручок файлы могут быть случайно дублироваться.

Мой проект строился хорошо, пока не выполнил один pod update, в этот момент появилась ошибка дубликата символа.

После долгих раздумий я наконец заметил, что Google pod закончил с двумя файлами. В моем случае это был GTMOAuth2SignIn.m и GTMOAuth2SignIn 2.m. Следовательно, повторяющаяся ошибка символа.

Обратите внимание, что контейнеры, похоже, ссылаются на файлы с помощью подстановочных знаков, указывающих на то, что все источники в каталоге должны быть включены. Это отличается от классического проекта Xcode, где файлы явно ссылаются.

Кроме того, я подозреваю, что выполнение обновления модуля во время процесса сборки может быть тем, что отключает Cocoapods. Одновременный доступ к одному и тому же файлу может вызвать проблемы. Просто теория.

Кроме того, это может объяснить, почему некоторые «решения», связанные с этой проблемой, состоят в удалении/удалении ссылочных контейнеров, а затем повторное добавление.

Смежные вопросы