He estado trabajando con Parse SDK y seguí la guía de pasos rápidos. Cuando intento ejecutar, obtengo estos 8 errores. ¿Alguna idea de por qué? Parece algo relacionado con la parte de Facebook de Parse que no estoy usando.
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
Estudios Sarabyte
fuente
fuente
Respuestas:
Este es un tipo de error asociado con la versión Parse iOS 1.1.33 ya que varias personas están viendo los mismos errores, incluido yo mismo.
Hay un par de soluciones:
Si no está utilizando una biblioteca que requiera el indicador de vinculador -ObjC, puede eliminar -ObjC de su proyecto:
Configuración de compilación> Otras banderas del vinculador> eliminar -ObjC
o si está utilizando una biblioteca que requiere esa marca, puede agregar el SDK de Facebook.
Ambas opciones eliminarán los errores. Con suerte, solucionan este problema, ya que no necesito el SDK de Facebook en mi aplicación.
Siga la discusión aquí:
https://parse.com/questions/cocoapods-incompatibility
fuente
FacebookSDK.framework
archivo y tengo otros archivos innecesarios.Aquí hay una solución potencialmente más simple que descargar, compilar e instalar el kit FB, que es un poco grande y engorroso. Tenga en cuenta que, por supuesto, no podrá usar ninguna de las funciones de tipo FB en Parse y se encontrará con problemas graves si activa alguno de los códigos de Parse que esperan usar estos símbolos ficticios. Pero, si te mantienes alejado de ellos, estarás bien, creo. Entonces...
Cree un objeto en su aplicación llamado FBMissingSymbols
Elimina el .h no lo necesitarás
Pon esto en el .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
fuente
Tienes que eliminar el antiguo
ParseFacebookUtils.framework
y mantener el nuevoParseFacebookUtilsV4.framework
para que funcione.fuente
Me encantó la respuesta de dbquarrel, pero ya no funciona porque le faltan algunas clases sociales nuevas.
Entonces haz lo mismo, pero en su lugar, agrega esto:
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
fuente
FBMissingSymbols
Eliminar el .h (porque no lo necesita), luego ponga lo anterior enFBMissingSymbols.m
.m
necesario#import <Foundation/Foundation.h>
incluir este nuevo archivo en la parte superior?Verifique y asegúrese de que no tenga dos versiones del marco "ParseFacebookUtils" agregadas allí:
ParseFacebookUtilsV4 y ParseFacebookUtils
Una vez que eliminé ParseFacebookUtils y guardé ParseFacebookUtilsV4, funcionó bien.
fuente
Mi solución definitivamente funcionará y puede usar -ObjC en otras banderas del enlazador.
Saludos .... ahora funciona ..... y no es necesario eliminar -ObjC.
fuente
Parece que es posible que deba agregar el 'marco de cuentas' y / o el marco social.
fuente
Un complemento a la respuesta de @blueHula. Parse ha eliminado Facebook SDK de su marco, lo que significa que a partir de alguna versión determinada (tal vez 1.1.33) la integración de parse.framework debería ir acompañada de la integración de FB SDK de forma independiente.
Consulte este enlace. utilizando el sdk de parse ios sin incluir el sdk de facebook
El punto clave es usar
-force_load $(SRCROOT)/path/libname.a
para vincular con las bibliotecas de terceros necesarias, en lugar de usar-all_load
y-ObjC
fuente
Es un error del vinculador ... No está incluyendo un marco necesario en su proyecto al que hace referencia en uno de los archivos de encabezado incluidos.
Entonces, por ejemplo, si tiene una inclusión en su código:
#import <Parse/Parse.h>
Probablemente requiera un marco de soporte y debe incluirlo en su aplicación. ¿Incluiste el
parse.framework
desde dentro de Xcode?fuente
Yo tenía el mismo uso y el único tercero que tenía era el SDK de PayPal. Después de eliminar -ObjC, todo se construyó bien. (siempre haga una copia de seguridad de su proyecto antes de cambiar la configuración)
fuente
es 2015 y tuve el mismo error. Desafortunadamente, ninguna de las respuestas anteriores funcionó para mí. Pero esto hizo:
Target> Build Phases> Link Binary With Libraries y luego agregue libstdc ++. 6.dylib
Esto resolvió mi problema.
fuente
Hay muchos marcos que necesitan establecer el indicador -ObjC como Otro indicador vinculado, mientras que Parse no le permite continuar si lo hace. Para lidiar con esto, puede hacer una de las siguientes cosas. He mostrado un ejemplo de Google Maps SDK que necesita la bandera -ObjC, pero debido a Parse en el mismo proyecto, no puedo usarlo directamente:
Solución 1: uso de force_load Flag
En lugar de establecer el indicador -ObjC como Otro indicador vinculado, use el indicador force_load para cargar un marco o biblioteca en particular.
Solución 2: uso del SDK de Facebook
Simplemente agregue el SDK de Facebook como un marco separado, esto le permitirá usar la bandera -ObjC. También asegúrese de haber agregado
Accounts.framework
ySocial.framework
. Si ha agregado Bolt.framework y usa Parse en blanco, entonces para tratar con el símbolo duplicado, elimineBolt.framwork
. Si aún tiene algunos errores, elimine las cuentas y el marco social y agréguelo nuevamente (este será el caso si ha utilizado el proyecto en blanco predeterminado de Parse).fuente
Me molestó este problema durante muchos días. Usé cocoapods para administrar todo el tercer SDK.
Así es como resolví este problema. Vaya al proyecto de pod y establezca el elemento "solo arquitectura de compilación" en NO.
¡Reconstruya el proyecto de pod y luego desaparezcan los errores de enlace! ayuda esto puede ayudar a alguien que esté usando cocoapods.
fuente
Yo tuve el mismo problema. Lo resolví descargando la versión anterior (1.1.32) desde aquí:
https://parse.com/downloads/ios/parse-library/1.1.32
(En mi caso necesitaba la bandera -ObjC)
Editar: Parece que la versión no funciona con arquitecturas de 64 bits.
fuente
Esto se puede eliminar del archivo de proyecto ubicado en
<projectname>/cordova/<projectname>/platforms/ios/<projectname>.xcodeproj/project.pbxproj
yBusque el archivo
-ObjC
, hay varias ubicaciones. Se parece a esto:OTHER_LDFLAGS = ( "-weak_framework", CoreFoundation, "-weak_framework", UIKit, "-weak_framework", AVFoundation, "-weak_framework", CoreMedia, "-weak-lSystem", "-force_load", "\"$(BUILT_PRODUCTS_DIR)/libCordova.a\"", "-ObjC", );
fuente
Instale cocoaPods y agregue esto a su Podfile:
pod 'Facebook-iOS-SDK' pod 'Parse' pod 'ParseFacebookUtils'
fuente