2015-08-22 25 views
6

Ho eliminato tutti i riferimenti a GoogleMobileAdsSDKiOS-7.1 dal mio progetto e aggiunto 7.4.1. Quando eseguo l'app sul simulatore, tutto funziona correttamente ma durante l'esecuzione sul dispositivo ottengo l'errore App-Linker di Mach-O.simboli duplicati per architettura arm64 (errore Xcode)

duplicate symbol l017 in: 
/Users/ib/Desktop/Monster GoogleAds7.4.1/GoogleMobileAdsSdkiOS- 7.4.1/GoogleMobileAds.framework/GoogleMobileAds(GADAdNetworkJavaScriptAdViewDelegate.o) 
/Users/ib/Desktop/Monster GoogleAds7.4.1/GoogleMobileAdsSdkiOS-7.4.1/GoogleMobileAds.framework/GoogleMobileAds(GADRewardBasedVideoAd+Mediation.o) 
duplicate symbol l018 in: 
/Users/ib/Desktop/Monster GoogleAds7.4.1/GoogleMobileAdsSdkiOS-7.4.1/GoogleMobileAds.framework/GoogleMobileAds(GADMRAIDPicture.o) 
/Users/ib/Desktop/Monster GoogleAds7.4.1/GoogleMobileAdsSdkiOS-7.4.1/GoogleMobileAds.framework/GoogleMobileAds(GADRewardBasedVideoAd+Mediation.o) 
duplicate symbol l016 in: 
/Users/ib/Desktop/Monster GoogleAds7.4.1/GoogleMobileAdsSdkiOS-7.4.1/GoogleMobileAds.framework/GoogleMobileAds(GADBannerAdViewDelegate.o) 
/Users/ib/Desktop/Monster GoogleAds7.4.1/GoogleMobileAdsSdkiOS-7.4.1/GoogleMobileAds.framework/GoogleMobileAds(GADAdAppViewController.o) 
duplicate symbol l021 in: 
/Users/ib/Desktop/Monster GoogleAds7.4.1/GoogleMobileAdsSdkiOS-7.4.1/GoogleMobileAds.framework/GoogleMobileAds(GADLocation.o) 
/Users/ib/Desktop/Monster GoogleAds7.4.1/GoogleMobileAdsSdkiOS-7.4.1/GoogleMobileAds.framework/GoogleMobileAds(GADNativeAdAttribution.o) 
duplicate symbol l016 in: 
/Users/ib/Desktop/Monster GoogleAds7.4.1/GoogleMobileAdsSdkiOS-7.4.1/GoogleMobileAds.framework/GoogleMobileAds(GADBannerAdViewDelegate.o) 
/Users/ib/Desktop/Monster GoogleAds7.4.1/GoogleMobileAdsSdkiOS-7.4.1/GoogleMobileAds.framework/GoogleMobileAds(GADNativeAdImage.o) 
duplicate symbol l005 in: 
/Users/ib/Desktop/Monster GoogleAds7.4.1/GoogleMobileAdsSdkiOS-7.4.1/GoogleMobileAds.framework/GoogleMobileAds(GADMWebViewRenderedChecker.o) 
/Users/ib/Desktop/Monster GoogleAds7.4.1/GoogleMobileAdsSdkiOS-7.4.1/GoogleMobileAds.framework/GoogleMobileAds(GADAdViewRenderedChecker.o) 
duplicate symbol l006 in: 
/Users/ib/Desktop/Monster GoogleAds7.4.1/GoogleMobileAdsSdkiOS-7.4.1/GoogleMobileAds.framework/GoogleMobileAds(GADMWebViewRenderedChecker.o) 
/Users/ib/Desktop/Monster GoogleAds7.4.1/GoogleMobileAdsSdkiOS-7.4.1/GoogleMobileAds.framework/GoogleMobileAds(GADAdViewRenderedChecker.o) 
duplicate symbol l012 in: 
/Users/ib/Desktop/Monster GoogleAds7.4.1/GoogleMobileAdsSdkiOS-7.4.1/GoogleMobileAds.framework/GoogleMobileAds(GADPinger.o) 
/Users/ib/Desktop/Monster GoogleAds7.4.1/GoogleMobileAdsSdkiOS-7.4.1/GoogleMobileAds.framework/GoogleMobileAds(GADCSIReporter.o) 
duplicate symbol l016 in: 
/Users/ib/Desktop/Monster GoogleAds7.4.1/GoogleMobileAdsSdkiOS-7.4.1/GoogleMobileAds.framework/GoogleMobileAds(GADBannerAdViewDelegate.o) 
/Users/ib/Desktop/Monster GoogleAds7.4.1/GoogleMobileAdsSdkiOS-7.4.1/GoogleMobileAds.framework/GoogleMobileAds(GADAdNetworkJavaScriptAdViewDelegate.o) 
duplicate symbol l021 in: 
/Users/ib/Desktop/Monster GoogleAds7.4.1/GoogleMobileAdsSdkiOS-7.4.1/GoogleMobileAds.framework/GoogleMobileAds(GADLocation.o) 
/Users/ib/Desktop/Monster GoogleAds7.4.1/GoogleMobileAdsSdkiOS-7.4.1/GoogleMobileAds.framework/GoogleMobileAds(GADMRAIDResizeProperties.o) 
ld: 21 duplicate symbols for architecture arm64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

So che questo errore significa che ho duplicati di cui sopra, ma il mio problema è dove in Xcode 6.1 faccio a trovare questi duplicati modo che io possa eliminare? Ho cercato in info.plist, ho creato le impostazioni, non ho trovato nessun duplicato. Dove in Xcode 6.1 si trovano i duplicati?

+0

Potrebbe darsi che tu abbia 21 nuove variabili dichiarate in ogni file con lo stesso identico nome. –

+0

In appdelegate.h per tutti i miei file ho scritto @property (nonatomic, strong) GADBannerView * adMobView; È questo il problema? Non capisco a cosa ti riferisci a – Merc

+0

Quando ho creato UIImageView e lo ho chiamato lo stesso nome su più file, ho ricevuto questo errore. Quindi immagino che tu abbia creato il tuo GADBannerView e lo abbia chiamato lo stesso nome, adMobView, su 21 file che lo usano giusto? Il tuo simbolo duplicato è il nome. Se lo desideri, puoi cambiare il nome di GADBannerView per ciascun file (rendi il nome diverso per ogni file), ma modifica tutto in ambito per rendere la tua vita molto più semplice. –

risposta

0

Ho la sensazione che in qualche modo tu stia ancora ottenendo il vecchio framework collegato alla tua app oltre a quello nuovo, ma non ne sono certo. Dai un'occhiata al log di costruzione e vedi quale esatto comando ld viene utilizzato per collegare le cose insieme.

+0

Dal mio Project Navigator, ho spostato nel cestino il mio GoogleMobileAdsSDKiOS7.1, in Impostazioni di costruzione ho rimosso ciò che era da 7.1 in Percorsi di ricerca quadro. Quindi aggiunto file di 7.4 direttamente dalla pagina di download. Questo ha aggiunto automaticamente il riferimento 7.4 nei Percorsi di ricerca del framework. Che altro dovevo fare? – Merc

+0

In apparenza è giusto, ma ovviamente qualcosa è sottilmente sbagliato. Prova a pubblicare la riga ld esatta dal log di costruzione. – dgatwood

+0

Dove in Xcode vado a cancellare il framework aggiuntivo o SDK 7.1 che è ancora in agguato per qualche motivo anche se non lo vedo da nessuna parte nel progetto. – Merc

7

Provare a rimuovere il flag "-ObjC" del linker dalla sezione "Other Linker Flags" delle impostazioni di generazione.

+0

Puoi spiegare perché questo fa la differenza? – genaks

+0

Questo è vero ma non è possibile creare build dopo quello ... (: – guru

+0

Funziona per me.) Grazie! –

1

avuto lo stesso problema, ecco come ho "risolto" è: semplicemente rinunciare a 7.4.1

Il problema va via se si torna a una versione precedente: https://dl.google.com/googleadmobadssdk/googlemobileadssdkios-7.3.1.zip

faccio Non so se ho fatto qualcosa di sbagliato, ma mi prenderò una congettura sfrenata e dare la colpa a Google su questo. Probabilmente nessuno si è preoccupato di testare la build di arm64 di questo framework.

Non importa quanto tempo ho speso cercando di modificarlo, fallirebbe sempre, mentre per qualche motivo la versione a 32 bit funzionerebbe correttamente.

Dal momento che è necessario che sia il 32 sia il 64 funzionino per inviare un ipa all'iTunes store, ci occuperemo della versione precedente.

Spero che questo salverà il dolore che ho dovuto attraversare.