iOS Admob Network Mediation: Doppelter Symbolfehler bei all_load und ObjC

8

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:

  • Kompilieren für Armv6, nicht Armv7 (nicht eine ideale Lösung, wie ich beide möchte)
  • Ersetze all_load mit force_load [Pfad zur Bibliothek], und testet auf einem tatsächlichen iOS-Gerät, da diese Methode anscheinend nicht mit einem Simulator funktioniert (dies scheint nichts zu tun, ich bekomme genau das gleiche Problem, benutze derselbe Pfad, der in dem Fehler gefunden wurde)
  • Entfernen von all_load (baut aber, wie ich schon sagte, erfordert AdMob Mediation es)
  • Entfernen von anstößigen Bibliotheken (funktioniert offensichtlich nicht, weil sich der Fehler über jede einzelne meiner statischen Bibliotheken beschwert, die ich brauche)

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! "

    
Paul 27.04.2012, 00:06
quelle

6 Antworten

0

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.

    
zirinisp 27.12.2012, 11:57
quelle
2

können Sie verwenden -force_load "Pfad / zu / Ihrer / libGoogleAdMobAds.a" anstelle von -all_load lädt dies nur Ihre libGoogleAdMobAds

    
Zennichimaro 27.04.2012 09:37
quelle
2

Bitte entfernen Sie einen Ordner in Ihrem SKD-Ordner

    
user1304842 03.08.2012 14:54
quelle
1

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 .

    
Pedro Lorente 22.05.2012 11:29
quelle
1

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.

    
Benoît Freslon 24.07.2013 10:56
quelle
0

Entfernen aller Ordner im Ordner "Add-on" außer dem Ordner "mediation".

Es funktioniert für mich.

    
Kit Ng 07.02.2013 17:36
quelle

Tags und Links