2015-09-16 5 views
5

Hier Aktualisierung ist mein podFile:Xcode doppelte Symbole für Architektur Fehler nach Kakaoschoten

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 arbeitet seit langer Zeit gut, aber jetzt, wo ich meine Schoten aktualisieren (pod update) diese 3 Schoten erhalten uptated:

  • AFNetworking
  • CocoaAsyncSocket
  • IQKeyboardManager

Danach funktioniert nichts mehr.

ich mehr als 600 duplicate symbols for architecture i386 Fehler erhalten, wie diese:

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) 

Irgendwelche Ideen?

EDITED: die Lösung Nachdem ich weiter unten, mein Projekt kompiliert nur für iPad Air und ich kann nicht Archive mehr, ich immer noch die gleichen Fehler ...

+0

Haben Sie versucht, die abgeleiteten Daten zu löschen und das Projekt zu bereinigen? – Templar

Antwort

8

Ich benutze die ‚manuell von der Alle umbenennen Der Ansatz von Symbolen. Ich habe das doppelte Symbol _OBJC_METACLASS_$_PodsDummy_Pods erlebt und so fügte ich die post_install in Podfile hinzu, um das doppelte Symbol zu vermeiden.

Ersetzen Sie Ihre pod Dateiinhalt mit diesem zu

'alle Symbole umbenennen manuell'
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' 

Edited: Löschen Sie die folgenden pod Elements aus dem Projekt

1. Pods Folder

2. Podfile.lock

3. ProjectName.xcworkspace

Und dann die Schoten installieren wieder

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.

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

+0

Ich erhalte diesen Fehler: '[!] Es ist ein Fehler bei der Verarbeitung des Nachinstallations-Hooks der Poddatei aufgetreten. undefiniertes Methodenprojekt für # ' – Ale

+1

löschen Sie die folgenden Pod-Elemente aus Ihrem Projekt ' 1. Pods Folder' '2. Podfile.lock' '3. ProjectName.xcworkspace' Und dann die Pods wieder installieren –

+1

Das war der Schlüssel! Entfernen Sie die Dateien und installieren Sie die Pods erneut. Übrigens musste ich auch 'project' in' pods_project' ändern. Vielen Dank, es funktioniert jetzt :) – Ale

6

Auch nach meiner Schoten zu löschen und neu zu installieren sie, ich hatte immer das gleiche Problem.

Ich fand schließlich die Lösung durch den Vergleich mit einem anderen Projekt. Das Problem wurde im Parameter "Andere Linker Flags" (OTHER_LDFLAGS) in Build-Einstellungen des Projekts.Die Hülsen wurden nicht nur durch ihren Namen verwiesen wird, sondern durch Hinzufügen des Präfix „Pods-myProject“

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

Also habe ich das Präfix nur entfernt und alles war richtig

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

Danke Mann.Gegenüber dem gleichen Problem, das Sie getan haben. – Nirmalsinh

+0

Ich bin glücklich, wenn es dir geholfen hat @Nirmalsinh – Omaty

+0

Ja, deine Antwort ist hilfreich für mich. – Nirmalsinh

3

ich einen ähnlichen Fehler behoben (nach einem chaotischen Cocoapods-Upgrade), indem einfach die Pods entfernt und dann wieder hinzugefügt werden. Sichern Sie Ihr Projekt, dann führen:

pod deintegrate 
pod install 
0

Ich denke Cocoapods hat einen Bug, wo pod Quelldateien können versehentlich dupliziert werden.

Mein Projekt war in Ordnung, bis nach der Durchführung eines pod update zu diesem Zeitpunkt ein doppelter Symbolfehler erschien.

Nach einiger Verwirrung bemerkte ich schließlich, dass ein Google-Pod mit zwei Dateien endete. In meinem Fall war es GTMOAuth2SignIn.m und GTMOAuth2SignIn 2.m. Daher der doppelte Symbolfehler.

Beachten Sie, dass Pods scheinbar durch Wildcards auf Dateien verweisen, die angeben, dass alle Quellen in einem Verzeichnis enthalten sein müssen. Dies unterscheidet sich von einem klassischen Xcode-Projekt, bei dem Dateien explizit referenziert werden.

Ich vermute auch, dass das Ausführen eines Pod-Updates während eines Build-Prozesses möglicherweise das Auslösen von Cocoapods ist. Der gleichzeitige Zugriff auf die gleiche (n) Datei (en) kann Probleme verursachen. Nur eine Theorie.

Dies kann auch erklären, warum einige "Lösungen" mit diesem Problem verbunden sind, um referenzierte Pods zu entfernen/löschen, und dann neu hinzufügen.

Verwandte Themen