Ich habe mit dem Parse SDK gearbeitet und bin der Kurzanleitung gefolgt. Wenn ich versuche zu laufen, erhalte ich diese 8 Fehler. Irgendwelche Ideen warum? Es scheint etwas mit dem Facebook-Teil von Parse zu tun zu haben, den ich nicht benutze.
Undefined symbols for architecture armv7:
"_FBTokenInformationTokenKey", referenced from:
-[PFFacebookTokenCachingStrategy accessToken] in Parse(PFFacebookTokenCachingStrategy.o)
-[PFFacebookTokenCachingStrategy setAccessToken:] in Parse(PFFacebookTokenCachingStrategy.o)
"_FBTokenInformationExpirationDateKey", referenced from:
-[PFFacebookTokenCachingStrategy cacheTokenInformation:] in Parse(PFFacebookTokenCachingStrategy.o)
-[PFFacebookTokenCachingStrategy expirationDate] in Parse(PFFacebookTokenCachingStrategy.o)
-[PFFacebookTokenCachingStrategy setExpirationDate:] in Parse(PFFacebookTokenCachingStrategy.o)
"_OBJC_METACLASS_$_FBSessionTokenCachingStrategy", referenced from:
_OBJC_METACLASS_$_PFFacebookTokenCachingStrategy in Parse(PFFacebookTokenCachingStrategy.o)
"_OBJC_CLASS_$_FBSessionTokenCachingStrategy", referenced from:
_OBJC_CLASS_$_PFFacebookTokenCachingStrategy in Parse(PFFacebookTokenCachingStrategy.o)
"_FBTokenInformationUserFBIDKey", referenced from:
-[PFFacebookTokenCachingStrategy facebookId] in Parse(PFFacebookTokenCachingStrategy.o)
-[PFFacebookTokenCachingStrategy setFacebookId:] in Parse(PFFacebookTokenCachingStrategy.o)
"_OBJC_CLASS_$_FBRequest", referenced from:
objc-class-ref in Parse(PFFacebookAuthenticationProvider.o)
"_OBJC_CLASS_$_FBSession", referenced from:
objc-class-ref in Parse(PFFacebookAuthenticationProvider.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ios
parse-platform
Sarabyte Studios
quelle
quelle
Antworten:
Dies ist eine Art Fehler, der mit der Parse iOS 1.1.33-Version verbunden ist, da mehrere Personen dieselben Fehler sehen - ich selbst eingeschlossen.
Es gibt ein paar Problemumgehungen.
Wenn Sie keine Bibliothek verwenden, für die das Linker-Flag -ObjC erforderlich ist, können Sie -ObjC aus Ihrem Projekt entfernen:
Build-Einstellungen> Andere Linker-Flags> -ObjC entfernen
Wenn Sie eine Bibliothek verwenden, für die dieses Flag erforderlich ist, können Sie das Facebook SDK hinzufügen.
Beide Optionen beseitigen die Fehler. Hoffentlich beheben sie das, da ich das Facebook SDK in meiner App nicht benötige.
Folgen Sie der Diskussion hier:
https://parse.com/questions/cocoapods-incompatibility
quelle
FacebookSDK.framework
Datei finden kann und andere unnötige Dateien hat.Hier ist eine möglicherweise einfachere Problemumgehung als das Herunterladen, Kompilieren und Installieren des FB-Kits, das ziemlich groß und umständlich ist. Beachten Sie, dass Sie natürlich keine der FB-Funktionen in Parse verwenden können und auf schwerwiegende Probleme stoßen, wenn Sie einen der Parse-Codes auslösen, der diese Dummy-Symbole erwartet. Aber wenn du dich von ihnen fernhältst, wirst du in Ordnung sein, denke ich. So...
Erstellen Sie in Ihrer Anwendung ein Objekt namens FBMissingSymbols
Löschen Sie die .h, die Sie nicht benötigen
Geben Sie dies in die .m:
quelle
Sie müssen das alte löschen
ParseFacebookUtils.framework
und das neue behaltenParseFacebookUtilsV4.framework
, damit es funktioniert.quelle
Ich habe die Antwort von dbquarrel geliebt, aber sie funktioniert nicht mehr, weil es einige neue soziale Klassen gibt.
Machen Sie dasselbe, aber fügen Sie stattdessen Folgendes hinzu:
quelle
FBMissingSymbols
Löschen Sie die .h" (weil Sie sie nicht benötigen) und geben Sie die oben genannten Informationen inFBMissingSymbols.m
.m
Datei nicht#import <Foundation/Foundation.h>
oben enthalten sein?Stellen Sie sicher, dass nicht zwei Versionen des Frameworks "ParseFacebookUtils" hinzugefügt wurden:
ParseFacebookUtilsV4 und ParseFacebookUtils
Nachdem ich ParseFacebookUtils entfernt und ParseFacebookUtilsV4 beibehalten hatte, funktionierte es einwandfrei.
quelle
Meine Lösung wird definitiv funktionieren und Sie können -ObjC in anderen Linker-Flags verwenden.
Prost .... jetzt funktioniert es ..... und es ist nicht nötig, -ObjC zu entfernen.
quelle
Klingt so, als müssten Sie möglicherweise "Accounts.Framework" und / oder "Social.Framework" hinzufügen.
quelle
Eine Ergänzung zur Antwort von @blueHula. Parse hat das Facebook SDK aus seinem Framework entfernt, was bedeutet, dass ab einer bestimmten Version (möglicherweise 1.1.33) die Integration von parse.framework von der unabhängigen Integration des FB SDK begleitet werden sollte.
Bitte verweisen Sie auf diesen Link mit dem parse ios sdk ohne das Facebook sdk
Der wichtigste Punkt ist die
-force_load $(SRCROOT)/path/libname.a
Verknüpfung mit den erforderlichen Bibliotheken von Drittanbietern, anstatt-all_load
und zu verwenden-ObjC
quelle
Es handelt sich um einen Linkerfehler ... Sie fügen Ihrem Projekt kein benötigtes Framework hinzu, auf das Sie in einer von Ihnen enthaltenen Header-Dateien verweisen.
Wenn Sie beispielsweise ein Include in Ihrem Code haben:
Es erfordert wahrscheinlich ein unterstützendes Framework, und Sie müssen es in Ihre App aufnehmen. Haben Sie das
parse.framework
aus Xcode aufgenommen?quelle
Ich hatte die gleiche Verwendung und der einzige Dritte, den ich hatte, war das PayPal SDK. Nach dem Entfernen von -ObjC ist alles in Ordnung. (Erstellen Sie immer ein Backup Ihres Projekts, bevor Sie die Einstellungen ändern.)
quelle
Es ist 2015 und ich hatte gerade den gleichen Fehler. Leider hat keine der oben genannten Antworten für mich funktioniert. Aber das tat:
Ziel> Phasen erstellen > Binär mit Bibliotheken verknüpfen und dann libstdc ++. 6.dylib hinzufügen
Dies löste das Problem für mich.
quelle
Es gibt viele Frameworks, die das Flag -ObjC als anderes verknüpftes Flag setzen müssen, während Parse es Ihnen nicht erlaubt, fortzufahren, wenn Sie dies tun. Um damit umzugehen, können Sie eines der folgenden Dinge tun. Ich habe ein Beispiel für ein Google Maps SDK gezeigt, das das Flag -ObjC benötigt, aber aufgrund von Parse im selben Projekt kann ich es nicht direkt verwenden:
Lösung 1 - Verwenden des force_load-Flags
Anstatt das Flag -ObjC als anderes verknüpftes Flag zu setzen, verwenden Sie das Flag force_load, um ein bestimmtes Framework oder eine bestimmte Bibliothek zu laden.
Lösung 2 - Verwenden des Facebook SDK
Fügen Sie einfach das Facebook SDK als separates Framework hinzu. Auf diese Weise können Sie das Flag -ObjC verwenden. Auch stellen Sie sicher , dass Sie hinzugefügt haben
Accounts.framework
undSocial.framework
. Wenn Sie Bolt.framework hinzugefügt und das leere Projekt Parse verwendet haben, entfernen Sie das doppelte SymbolBolt.framwork
. Wenn es immer noch wenige Fehler gibt, entfernen Sie das Konten- und Sozial-Framework und fügen Sie es erneut hinzu (Dies ist der Fall, wenn Sie das leere Standardprojekt Parse verwendet haben).quelle
Ich habe mich viele Tage lang mit diesem Thema beschäftigt. Ich habe Cocoapods verwendet, um das gesamte dritte SDK zu verwalten.
Hier ist, wie ich dieses Problem gelöst habe. Gehen Sie zum Pod-Projekt und setzen Sie den Punkt "Nur Architektur erstellen" auf NEIN.
Pod-Projekt neu erstellen und dann Link-Fehler verschwinden! Hilfe dies kann jemandem helfen, der Cocoapods verwendet.
quelle
Ich hatte das gleiche Problem. Ich habe das Problem gelöst, indem ich die vorherige Version (1.1.32) von hier heruntergeladen habe:
https://parse.com/downloads/ios/parse-library/1.1.32
(In meinem Fall brauchte ich das -ObjC-Flag)
Bearbeiten: Es scheint, dass die Version nicht mit 64-Bit-Architekturen funktioniert.
quelle
Dies kann aus der Projektdatei in
<projectname>/cordova/<projectname>/platforms/ios/<projectname>.xcodeproj/project.pbxproj
und entfernt werdenDurchsuchen Sie die Datei nach
-ObjC
, es gibt mehrere Speicherorte. Es sieht aus wie das:quelle
Installieren Sie cocoaPods und fügen Sie diese Ihrem Podfile hinzu:
quelle