Pracowałem z parse SDK i postępowałem zgodnie z przewodnikiem Szybki krok. Kiedy próbuję uruchomić, otrzymuję te 8 błędów. Jakieś pomysły, dlaczego? Wygląda na to, że ma to związek z częścią Parse dotyczącą Facebooka, której nie używam.
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
źródło
źródło
Odpowiedzi:
Jest to jakiś błąd związany z wydaniem Parse iOS 1.1.33, ponieważ wiele osób widzi te same błędy - w tym ja.
Istnieje kilka obejść:
Jeśli nie używasz biblioteki, która wymaga flagi konsolidatora -ObjC, możesz usunąć -ObjC ze swojego projektu:
Ustawienia kompilacji> Inne flagi konsolidatora> usuń -ObjC
lub jeśli używasz biblioteki, która wymaga tej flagi, możesz dodać zestaw SDK Facebooka.
Obie opcje wyeliminują błędy. Mam nadzieję, że naprawią to, ponieważ nie potrzebuję zestawu SDK Facebooka w mojej aplikacji.
Śledź dyskusję tutaj:
https://parse.com/questions/cocoapods-incompatibility
źródło
FacebookSDK.framework
pliku i mam inne niepotrzebne pliki.Oto potencjalnie prostsze obejście niż pobieranie, kompilowanie i instalowanie zestawu FB, który jest dość duży i nieporęczny. Zauważ, że oczywiście nie będziesz w stanie użyć żadnej funkcji typu FB w Parse i napotkasz poważne problemy, jeśli wyzwolisz dowolny z kodu Parse, który oczekuje użycia tych fikcyjnych symboli. Ale jeśli będziesz trzymać się z dala od nich, myślę, że wszystko będzie w porządku. Więc...
Utwórz w swojej aplikacji obiekt o nazwie FBMissingSymbols
Usuń plik .h, którego nie będziesz potrzebować
Umieść to w .m:
NSString *FBTokenInformationExpirationDateKey = @""; NSString *FBTokenInformationTokenKey = @""; NSString *FBTokenInformationUserFBIDKey = @""; @interface FBAppCall:NSObject @end @implementation FBAppCall @end @interface FBRequest:NSObject @end @implementation FBRequest @end @interface FBSession:NSObject @end @implementation FBSession @end @interface FBSessionTokenCaching:NSObject @end @implementation FBSessionTokenCaching @end @interface FBSessionTokenCachingStrategy:NSObject @end @implementation FBSessionTokenCachingStrategy @end
źródło
Musisz usunąć stare
ParseFacebookUtils.framework
i zachować nowe,ParseFacebookUtilsV4.framework
aby działało.źródło
Uwielbiałem odpowiedź dbquarrela, ale już nie działa, ponieważ brakuje w niej kilku nowych klas społecznych.
Zrób więc to samo, ale zamiast tego dodaj to:
NSString *FBTokenInformationExpirationDateKey = @""; NSString *FBTokenInformationTokenKey = @""; NSString *FBTokenInformationUserFBIDKey = @""; NSString *SLServiceTypeTwitter = @""; NSString *ACAccountTypeIdentifierTwitter = @""; @interface FBAppCall:NSObject @end @implementation FBAppCall @end @interface FBRequest:NSObject @end @implementation FBRequest @end @interface FBSession:NSObject @end @implementation FBSession @end @interface FBSessionTokenCaching:NSObject @end @implementation FBSessionTokenCaching @end @interface FBSessionTokenCachingStrategy:NSObject @end @implementation FBSessionTokenCachingStrategy @end @interface ACAccountStore:NSObject @end @implementation ACAccountStore @end @interface SLRequest:NSObject @end @implementation SLRequest @end @interface SLComposeViewController:NSObject @end @implementation SLComposeViewController @end
źródło
FBMissingSymbols
Usuń plik .h (ponieważ go nie potrzebujesz), a następnie umieść powyższyFBMissingSymbols.m
.m
plik nie musi#import <Foundation/Foundation.h>
znajdować się na górze?Sprawdź i upewnij się, że nie masz dodanych dwóch wersji frameworka „ParseFacebookUtils”:
ParseFacebookUtilsV4 i ParseFacebookUtils
Po usunięciu ParseFacebookUtils i zachowaniu ParseFacebookUtilsV4 działało dobrze.
źródło
Moje rozwiązanie na pewno zadziała i możesz użyć -ObjC w innych flagach konsolidatora.
Pozdrawiam ... teraz to działa ..... i nie ma potrzeby usuwania -ObjC.
źródło
Wygląda na to, że może być konieczne dodanie „Accounts.Framework” i / lub „Social.Framework”.
źródło
Uzupełnienie odpowiedzi @blueHula. Parse usunął Facebook SDK ze swojego frameworka, co oznacza, że od niektórych wersji (być może 1.1.33) integracja parse.framework powinna być połączona z niezależną integracją FB SDK.
Proszę zapoznać się z tym linkiem używając parsowania zestawu SDK ios bez dołączania zestawu SDK Facebooka
Kluczową kwestią jest użycie
-force_load $(SRCROOT)/path/libname.a
do łączenia się z niezbędnymi bibliotekami stron trzecich, zamiast używania-all_load
i-ObjC
źródło
To jest błąd konsolidatora ... W swoim projekcie nie dołączasz potrzebnego frameworka, do którego odwołujesz się w jednym z plików nagłówkowych.
Na przykład, jeśli masz uwzględnienie w swoim kodzie:
#import <Parse/Parse.h>
Prawdopodobnie wymaga struktury wspierającej i musisz ją uwzględnić w swojej aplikacji. Czy
parse.framework
włączyłeś plik z Xcode?źródło
Miałem to samo zastosowanie i jedyną stroną trzecią, jaką miałem, był pakiet PayPal SDK. Po usunięciu -ObjC wszystko działało dobrze. (zawsze wykonaj kopię zapasową projektu przed zmianą ustawień)
źródło
jest rok 2015 i właśnie miałem ten sam błąd. Niestety żadna z powyższych odpowiedzi nie zadziałała. Ale to zrobiło:
Cel> Fazy kompilacji> Połącz plik binarny z bibliotekami, a następnie dodaj libstdc ++. 6.dylib
To rozwiązało problem.
źródło
Istnieje wiele frameworków, które muszą ustawić flagę -ObjC jako inną połączoną flagę, podczas gdy Parse nie pozwala na kontynuowanie, jeśli to zrobisz. Aby sobie z tym poradzić, możesz wykonać jedną z następujących czynności. Pokazałem przykład Google Maps SDK, który wymaga flagi -ObjC, ale ze względu na Parse w tym samym projekcie nie mogę go bezpośrednio użyć:
Rozwiązanie 1 - użycie flagi force_load
Zamiast ustawiać flagę -ObjC jako inną połączoną flagę, użyj flagi force_load, aby załadować określoną strukturę lub bibliotekę.
Rozwiązanie 2 - Korzystanie z Facebook SDK
Po prostu dodaj Facebook SDK jako osobny framework, pozwoli to na użycie flagi -ObjC. Upewnij się również, że dodałeś
Accounts.framework
iSocial.framework
. Jeśli dodałeś Bolt.framework i korzystasz z pustego projektu Parse, usuń zduplikowany symbolBolt.framwork
. Jeśli nadal ma kilka błędów, usuń Konta i ramy społecznościowe i dodaj je ponownie (stanie się tak, jeśli użyłeś domyślnego pustego projektu Parse).źródło
Ten problem męczył mnie przez wiele dni. Użyłem cocoapods do zarządzania całym trzecim SDK.
Oto, jak rozwiązałem ten problem. Przejdź do projektu pod i ustaw opcję „Tylko budowanie architektury” na NIE.
Odbuduj projekt poda, a następnie błędy linków zniknęły! pomoc to może pomóc komuś, kto używa cocoapods.
źródło
Miałem ten sam problem. Rozwiązałem pobierając poprzednią wersję (1.1.32) stąd:
https://parse.com/downloads/ios/parse-library/1.1.32
(W moim przypadku potrzebowałem flagi -ObjC)
Edycja: Wygląda na to, że wersja nie działa na architekturach 64-bitowych.
źródło
Można to usunąć z pliku projektu znajdującego się w
<projectname>/cordova/<projectname>/platforms/ios/<projectname>.xcodeproj/project.pbxproj
iWyszukaj plik
-ObjC
, istnieje wiele lokalizacji. To wygląda tak:OTHER_LDFLAGS = ( "-weak_framework", CoreFoundation, "-weak_framework", UIKit, "-weak_framework", AVFoundation, "-weak_framework", CoreMedia, "-weak-lSystem", "-force_load", "\"$(BUILT_PRODUCTS_DIR)/libCordova.a\"", "-ObjC", );
źródło
Zainstaluj cocoaPods i dodaj to do swojego Podfile:
pod 'Facebook-iOS-SDK' pod 'Parse' pod 'ParseFacebookUtils'
źródło