cocoa touch - fbsdkloginkit - Facebook iOS SDK 3.1 con errores del enlazador XCode 4.2
fbsdkcorekit (5)
El SDK se basa en otros tres marcos (AdSupport, Cuentas y Social).
Para agregar estos, vaya a la sección ''Marcos y bibliotecas vinculadas'' del panel Resumen del objetivo y agréguelos.
Acabo de actualizar el SDK de iOS de Facebook en mi proyecto de 3.0 a 3.1. El proyecto ya no se compila. En su lugar obtengo los siguientes errores de vinculador:
Undefined symbols for architecture i386:
"_ACFacebookAppIdKey", referenced from:
-[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o)
"_ACFacebookAudienceEveryone", referenced from:
-[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o)
"_ACFacebookAudienceFriends", referenced from:
-[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o)
"_ACFacebookAudienceKey", referenced from:
-[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o)
"_ACFacebookAudienceOnlyMe", referenced from:
-[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o)
"_ACFacebookPermissionsKey", referenced from:
-[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o)
"_OBJC_CLASS_$_ASIdentifierManager", referenced from:
objc-class-ref in FacebookSDK(FBSettings.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Los documentos de Facebook dicen claramente:
El SDK se basa en otros tres marcos (AdSupport, Cuentas y Social) para usar las funciones de Facebook incorporadas en iOS6.
Esos marcos no existen en Xcode 4.2. ¿Hay alguna solución alternativa, es decir, puedo descargar (¿dónde?) Y agregar los marcos manualmente a mi proyecto, ¿será suficiente para deshacerme de los errores de compilación o tengo que actualizar a Xcode 4.5?
Esos marcos son parte de iOS 6 (bueno, excepto para Accounts
, que es de iOS 5). No podrá usarlos sin actualizar a Xcode 4.5 y, por consiguiente, a iOS 6 SDK.
Aún puede establecer su destino de implementación en iOS 4.3, si esa es su preocupación.
Creo que tus opciones son:
- Actualizar a Xcode 4.5, o
- Utilice Facebook SDK 3.0.
Los siguientes pasos pueden ser útiles para resolver este problema
- Descargue Facebook iOS SDK 3.0 de los enlaces presentes en la URL http://developers.facebook.com/ios/features/whats-new-ios-sdk-3/
- Agregue el framework FacebookSDK desde el directorio de documentos Mac
- Añadir sqlite3 al proyecto
Luego, probé el código en http://developers.facebook.com/docs/howtos/login-with-facebook-using-ios-sdk/ con los siguientes cambios (como lo es para Facebook iOS SDK 3.1)
- Reemplace
openActiveSessionWithReadPermissions
conopenActiveSessionWithPermissions
- Reemplace
[FBSession.activeSession handleDidBecomeActive];
con[FBSession activeSession];
Esto funcionó para mí. Pruébalo una vez.
Gracias, prodeveloper.
Para aclarar las cosas:
Para XCode 4.5:
Si usa FB SDK3.0 , solo necesita agregar marcos y marcos de trabajo de FacebookSDK.
Si usa FB SDK3.1 , debe agregar los marcos de Cuentas, FacebookSDK, Social y AdSupport.
Si utiliza FB SDK3.2 ++ , compruebe por sí mismo qué otros marcos puede o no necesitar. ;)
Espero que lo resuma muy bien para todos.
Sobri tiene razón. Actualice a Xcode 4.5 o use SDK 3.0 o si desea usar 3.1, descargue el código fuente desde github, modifique el archivo de compilación (básicamente elimine las referencias a los marcos provistos por iOS 6.0) y reconstruya el SDK. De esa forma puede usar el SDK 3.1 y ejecutarlo en versiones anteriores de XCode.