2015-09-16 12 views
5

ecco la mia podFile:Xcode simboli duplicati per errore l'architettura dopo l'aggiornamento baccelli di cacao

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 ha lavorato bene per un lungo periodo di tempo, ma ora, quando aggiorno il mio baccelli (pod update) questi 3 baccelli ottengono uptated:

  • AFNetworking
  • CocoaAsyncSocket
  • IQKeyboardManager

Dopo, niente funziona più.

ho più di 600 duplicate symbols for architecture i386 errori, come questo:

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) 

Tutte le idee?

Modificato: Dopo aver fatto la soluzione mostrato di seguito, il mio progetto compila solo per iPad Air e non posso Archive più, ho ancora lo stesso errore ...

+0

Hai provato a eliminare i dati derivati ​​e pulire il progetto? – Templar

risposta

8

uso il 'Rinominare manualmente tutti i L'approccio dei simboli Stavo sperimentando il simbolo duplicato _OBJC_METACLASS_$_PodsDummy_Pods e così ho aggiunto il post_install nel Podfile per evitare il simbolo duplicato.

Sostituire il contenuto del file pod con questo per 'Rinomina manualmente tutti i simboli'

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' 

Modificato: Eliminare la seguente dell'elemento pod dal progetto

1. Pods Folder

2. Podfile.lock

3. ProjectName.xcworkspace

E poi installare di nuovo i baccelli

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.

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

+0

Ho ricevuto questo errore: '[!] Si è verificato un errore durante l'elaborazione del hook post-installazione del Podfile. progetto di metodo non definito per # ' – Ale

+1

elimina i seguenti elementi del pod dal tuo progetto ' 1. Cartella per cialde' '2. Podfile.lock' '3. ProjectName.xcworkspace' E quindi installare nuovamente i pod –

+1

Questa era la chiave! rimuovendo i file e reinstallando i pod. A proposito, ho anche dovuto cambiare 'project' in' pods_project'. Grazie mille funziona ora :) – Ale

6

Anche dopo l'eliminazione miei baccelli e li reinstallazione, ho avuto sempre lo stesso problema.

Ho finalmente trovato la soluzione confrontandola con un altro progetto. Il problema era nel parametro "Altri linker flag" (OTHER_LDFLAGS) nelle Impostazioni di creazione del progetto.I baccelli sono state utilizzate non solo con il loro nome, ma con l'aggiunta del prefisso "pods-myProject"

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

Così ho appena rimosso il prefisso e tutto era giusto

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

Grazie amico.Di fronte allo stesso problema che hai fatto. – Nirmalsinh

+0

Sono felice se ti ha aiutato @Nirmalsinh – Omaty

+0

Sì, la tua risposta è utile per me. – Nirmalsinh

3

ho fissato un errore simile (dopo un disordinato aggiornamento di Cocoapods) semplicemente rimuovendo e quindi riaggiungendo i pod. Eseguire il backup del progetto, quindi eseguire:

pod deintegrate 
pod install 
0

penso Cocoapods ha un bug in cui i file di origine pod possono essere duplicati accidentalmente.

Il mio progetto stava andando bene fino a dopo aver eseguito uno pod update a questo punto è apparso un errore di simbolo duplicato.

Dopo un sacco di confusione, ho finalmente notato che un pod Google ha finito con due file. Nel mio caso, erano GTMOAuth2SignIn.m e GTMOAuth2SignIn 2.m. Quindi, l'errore di simbolo duplicato.

Nota che i pod sembrano fare riferimento ai file in base a caratteri jolly che indicano che deve essere inclusa tutta la sorgente in una directory. Ciò differisce da un progetto Xcode classico in cui i file sono esplicitamente referenziati.

Inoltre, ho il sospetto che l'esecuzione di un aggiornamento pod durante un processo di compilazione potrebbe essere ciò che sta incitando su Cocoapods. L'accesso simultaneo allo stesso file (s) può causare problemi. Solo una teoria.

Inoltre, questo potrebbe spiegare perché alcune "soluzioni" associate a questo problema sono rimuovere/eliminare i pod di riferimento, quindi aggiungere nuovamente.