Ich weiß, dass diese Frage schon einmal gestellt wurde, aber ich habe alles versucht, was ich finden konnte, und nichts davon hat funktioniert.
Ich habe eine voll funktionsfähige iOS-App, mit der ich jetzt AdMob Network Mediation integrieren möchte. Ich hatte bereits erfolgreich nur AdMob funktioniert gut, aber der Mediator benötigt die Linker "-all_load" und "-ObjC" gesetzt werden (in anderen Linker-Flags). Sicher genug, wenn ich ohne sie baue, werden keine Anzeigen gezeigt und in den Protokollen heißt es, dass sie gesetzt werden müssen.
Das Problem ist, dass ich meine App weder mit all_load noch mit ObjC set erfolgreich erstellen kann. Ich habe gelesen, dass ObjC für iOS-Apps nicht notwendig ist, aber auch ohne es habe ich immer noch das Problem mit all_load. Das Problem ist, dass ich diesen Fehler bekomme:
ld: Duplikat-Symbol [einige Befehle hier] [einige statische Bibliothek] und [Pfad zu demselben Befehl] für Architektur armv7 clang: error: Der Linker-Befehl ist mit dem Exit-Code 1 fehlgeschlagen (benutze -v, um den Aufruf zu sehen)
Wenn ich die störende statische Bibliothek und die Neuerstellung entferne, geht der Fehler einfach weiter zur nächsten statischen Bibliothek, die ich habe, und so weiter. Da ich versuche, einen Anzeigenmediator zu installieren, benötigt meine App mehrere statische Bibliotheken aus verschiedenen Werbenetzwerken.
Hier sind einige Lösungen, die ich versucht habe, die fehlgeschlagen sind:
Bei der Lösung dieses Problems ist jede Hilfe hilfreich.
EDIT: DIE LÖSUNG ZU MEINEM PROBLEM
Wie sich herausstellt, war das einzige, was ich nicht versucht habe, nur -ObjC auf einem tatsächlichen Gerät zu verwenden, das scheint für mich zu funktionieren!
EDIT2: NIEMAND, NOCH FEHLERHAFT
Ich werde meinen Kommentar unten zitieren, wenn ich gefragt werde, welche statischen Bibliotheken mir Probleme bereiten:
"Nun, ich habe AdMob Mediation ohne andere Netzwerke arbeiten lassen, indem ich all_load ausgeschlossen habe und nur ObjC eingeschlossen habe, was gut funktionierte, bis ich mein erstes Netzwerk, Adfonic, hinzugefügt habe, das derzeit mit MobileAppTracking in Konflikt steht. ld: Duplikatesymbol _OBJC_IVAR _ $ _ Erreichbarkeit.RechenbarkeitRef in [Pfad] / Adfonic SDK / libAdfonic.a (Erreichbarkeit.o) und [Pfad] /Objekt-normal/Armv6/Reachability.o für Architektur armv6 clang: Fehler: Linker-Befehl fehlgeschlagen mit Exit Code 1 (benutze -v um den Aufruf zu sehen) "
Ich hatte Admob Mediators Funktion, indem ich alle anderen Werbenetzwerkbibliotheken löschte, aber mit meiner ersten Netzwerkintegration von Drittanbietern bekomme ich einen weiteren Konflikt zwischen dieser und einer Tracking-Bibliothek, die ich implementiert habe, MobileAppTracking. Suche immer noch nach einer Lösung, um 'doppelte Symbole' zu lösen.
EDIT 3
Ich kann bestätigen, dass jedes einzelne Werbenetzwerk, das ich mit dem AdMob Mediator (außer AdMob selbst) versuche, nicht kompiliert werden kann, die meisten davon aufgrund von doppelten Symbolfehlern. Ich verstehe nicht, wie das sein kann, da ich sicher bin, dass ich nicht der Einzige bin, der Admobs Vermittlungsdienst nutzt.
EDIT 4
Ich zitiere meinen Kommentar unten:
"Ich habe es tatsächlich geschafft, die meisten Werbenetzwerke und Bibliotheken für mich arbeiten zu lassen, ich musste einige Referenzen unter Kompilierquellen löschen, aber ich habe es kompiliert, trotzdem benutze -ObjC und - all_load! "
Ich hatte das gleiche Problem. Nach dem Hinzufügen von -ObjC in anderen Linkern, konnte ich nicht kompilieren (Es beschwerte sich über doppelte Symbole und Erreichbarkeit.). Wenn ich es entferne, würde ich kompilieren, aber AdMob stürzte die App ab.
Nach vielen Tests und Spielen mit vielen Parametern habe ich Folgendes getan und es funktioniert jetzt: Ich ging zu Zielen - & gt; AppName - & gt; Phasen erstellen - & gt; Quellen kompilieren und Erreichbarkeit entfernen.m. Es kompilierte gut und AdMod arbeitete auch ohne Absturz.
können Sie verwenden -force_load "Pfad / zu / Ihrer / libGoogleAdMobAds.a" anstelle von -all_load lädt dies nur Ihre libGoogleAdMobAds
Fügen Sie eine benutzerdefinierte Buildeinstellung mit dem Namen "EXCLUDED_SOURCE_FILE_NAMES" hinzu: wie in diesem Artikel gezeigt, oder ändern Sie die .a-Datei wie in dieser Artikel .
Haben Sie festgestellt, wie Sie dieses Problem beheben können?
Ich entferne einfach den Parameter -all_load und meine App funktioniert gut auf meinem Gerät. Aber ich bin mir nicht sicher über diesen Trick.
Tags und Links ios xcode armv7 admob linker-errors