Facebook-sdk-for-unity: Unity 2019.3: biblioteca no encontrada para -lFBSDKCoreKit

Creado en 24 mar. 2020  ·  16Comentarios  ·  Fuente: facebook/facebook-sdk-for-unity

Lista de Verificación

Ambiente

Describe aquí tu entorno de desarrollo, dando tantos detalles como sea posible. Si los tiene, asegúrese de incluir:

  • Versión del editor de Unity: 2019.3.6f1
  • Versión del SDK de Unity: 7.19.1
  • Plataforma de instalación y versión: iOS versión 10+ XCode 11.3.1 '

Metas

Compilación para iOS con Unity 2019.3

Resultados previstos

Construcción exitosa

Resultados actuales

La compilación falla porque no se encuentra la biblioteca -lFBSDKCoreKit.
Otros problemas están cerrados pero no resueltos en Facebook SDK 7.19+:

https://github.com/facebook/facebook-sdk-for-unity/issues/352
https://github.com/facebook/facebook-sdk-for-unity/issues/350

Pasos para reproducir

Crea un proyecto nuevo en la unidad
Instalar el paquete FB SDK (7.19.1)
Proyecto Build Unity (2019.3.6f1)
Intente construir el proyecto Xcode en Xcode (versión 11.3.1)
Comprobar errores

bug

Comentario más útil

Tuve el mismo problema. Aunque no importa en qué configuré mi generación cocoapod en Unity Play Services Resolver, el .xcworkspace no se estaba creando.

Cómo lo arreglé:
abra el terminal en la carpeta raíz de su proyecto y ejecute
pod install
esto creó el archivo .xcworkspace. Después de abrirlo, agregar información de firma, etc., como de costumbre y luego construirlo, finalmente funcionó.

Todos 16 comentarios

Tengo exactamente el mismo problema.
Unidad: 2019.3.6f1
SDK de FB: (7.19.1)
XCode: 11.3.1

Exactamente el mismo problema.
Unidad: 2018.4.5f1 (LTS)
SDK de FB: 7.19.1
XCode: 11.3.1

Creo que me di cuenta de cuál era el problema. Estaba construyendo el proyecto Unity desde el archivo del proyecto, mientras que con cocoapods necesitas abrir el proyecto en xcode desde el archivo del espacio de trabajo , ya que incluye el proyecto Unity Y el proyecto cocoapods. Nunca antes creó nada desde el archivo del espacio de trabajo con Unity. Mi error.

@flamepygmy
Eso también me resolvió el problema. :-)
No estoy familiarizado en absoluto con XCode, pero supongo que un espacio de trabajo es comparable a una solución de Visual Studio. Hasta ahora, siempre había hecho doble clic en el archivo .xcodeproj.

Tuve el mismo problema. Aunque no importa en qué configuré mi generación cocoapod en Unity Play Services Resolver, el .xcworkspace no se estaba creando.

Cómo lo arreglé:
abra el terminal en la carpeta raíz de su proyecto y ejecute
pod install
esto creó el archivo .xcworkspace. Después de abrirlo, agregar información de firma, etc., como de costumbre y luego construirlo, finalmente funcionó.

Actualmente también estoy migrando mi juego habitual a 2019.3 y me enfrento al mismo problema.

Esto parece ser un problema donde FBSDKCOCOAPODS=1 se incluye como una macro de preprocesador del objetivo principal ( Unity-iPhone ) en lugar de UnityFramework , que es el objetivo de IOSResolver e incluye todo el código fuente exportado al construir el espacio de trabajo de XCode.

Sin esta macro, FBSDKCoreKitImport.h terminará apuntando a la inclusión / importación incorrecta:

#if defined BUCK
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#elif defined __cplusplus
#import <FBSDKCoreKit.h>
#elif defined FBSDKCOCOAPODS
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#else
<strong i="13">@import</strong> FBSDKCoreKit;
#endif

Mirando el código fuente del SDK de Facebook, creo que el problema está en FixupFiles.cs :
`` c #
public static void AddBuildFlag (ruta de la cadena)
{
string projPath = Path.Combine (ruta, Path.Combine ("Unity-iPhone.xcodeproj", "proyecto.pbxproj"));
PBXProject proj = nuevo PBXProject ();
proj.ReadFromString (Archivo.ReadAllText (projPath));
string targetGUID = proj.TargetGuidByName ("Unity-iPhone");
proj.AddBuildProperty (targetGUID, "GCC_PREPROCESSOR_DEFINITIONS", "$ (heredado) FBSDKCOCOAPODS = 1");
proj.AddBuildProperty (targetGUID, "OTHER_LDFLAGS", "-ObjC");
proj.AddFrameworkToProject (targetGUID, "Accelerate.framework", verdadero);
File.WriteAllText (projPath, proj.WriteToString ());
}

It's still looking for the `Unity-iPhone` target when it should be looking for `UnityFramework` instead for Unity 2019.3.

I can submit a pull request with a quick workaround for the issue like the following, just let me know if I'm in the right direction. Also, I don't have much knowledge on this repo source code, so there could be better solutions than this one.

**PBXProject.cs:**
```c#
        /// <summary>
        /// Returns the default main target name in Unity project.
        /// The returned target name can then be used to retrieve the GUID of the target via TargetGuidByName
        /// function. This function can only be used in Unity-generated projects.
        /// </summary>
        /// <returns>The default main target name.</returns>
        public static string GetUnityTargetName()
        {
#if UNITY_2019_3_OR_NEWER
            return "UnityFramework";
#else
            return "Unity-iPhone";
#endif
        }

FixupFiles.cs:
c# public static void AddBuildFlag(string path) { string projPath = Path.Combine(path, Path.Combine("Unity-iPhone.xcodeproj", "project.pbxproj")); PBXProject proj = new PBXProject(); proj.ReadFromString(File.ReadAllText(projPath)); string targetGUID = proj.TargetGuidByName(GetUnityTargetName()); proj.AddBuildProperty(targetGUID, "GCC_PREPROCESSOR_DEFINITIONS", " $(inherited) FBSDKCOCOAPODS=1"); proj.AddBuildProperty(targetGUID, "OTHER_LDFLAGS", "-ObjC"); proj.AddFrameworkToProject(targetGUID, "Accelerate.framework", true); File.WriteAllText(projPath, proj.WriteToString()); }

Estuve luchando con un problema adyacente en 2019.3, se construye pero no se ejecuta. Agradecería cualquier orientación. Problema muy similar a los OP, por lo que no estoy seguro de que justifique un problema por separado.

@felippeduran Probé su solución y construyó las DLL del SDK desde la fuente, pero todavía obtenía el mismo error que recibía antes:

2020-04-15 03:25:54.105800+0300 offroad3[35344:6034574] Error loading /var/containers/Bundle/Application/FE59C147-7622-42CD-BE51-39AA849780D6/offroad3.app/Frameworks/UnityFramework.framework/UnityFramework: dlopen(/var/containers/Bundle/Application/FE59C147-7622-42CD-BE51-39AA849780D6/offroad3.app/Frameworks/UnityFramework.framework/UnityFramework, 265): Library not loaded: @rpath/FBSDKCoreKit.framework/FBSDKCoreKit Referenced from: /private/var/containers/Bundle/Application/FE59C147-7622-42CD-BE51-39AA849780D6/offroad3.app/Frameworks/UnityFramework.framework/UnityFramework Reason: image not found 2020-04-15 03:25:54.268034+0300 offroad3[35344:6034574] Error loading /var/containers/Bundle/Application/FE59C147-7622-42CD-BE51-39AA849780D6/offroad3.app/Frameworks/UnityFramework.framework/UnityFramework: dlopen(/var/containers/Bundle/Application/FE59C147-7622-42CD-BE51-39AA849780D6/offroad3.app/Frameworks/UnityFramework.framework/UnityFramework, 265): Library not loaded: @rpath/FBSDKCoreKit.framework/FBSDKCoreKit Referenced from: /private/var/containers/Bundle/Application/FE59C147-7622-42CD-BE51-39AA849780D6/offroad3.app/Frameworks/UnityFramework.framework/UnityFramework Reason: image not found

EDITAR:

Esto resultó ser un problema con un mediador de anuncios que integraba Facebook Audience Network, y no el SDK de Facebook Unity. Si tiene un resultado similar al mío, fue el complemento de mediación Appodeal lo que causó esto. De lo contrario, ignore este comentario.

EDITAR 2:

Como referencia futura en Google, dado que no pude encontrar este problema específico, la solución a mi problema fue simplemente agregar directamente los marcos a la sección Incrustar marcos de las Fases de compilación del objetivo Unity-iPhone.

@aVolnov , ¿te funcionó la solución sugerida?

@felippeduran No estoy realmente seguro, ya que mi problema resultó ser una bestia completamente diferente.

@flamepygmy me acabas de salvar la vida. Perdí tantas horas en esto :(

Sí, la canalización de Unity iOS realmente es propensa a errores ... Tantas piezas que tienen que trabajar juntas, completamente impredecibles si alguna actualización de paquete rompe algo.

Comentar la sugerencia de @ flo-wolf también me solucionó este problema en 2019.3.9f1.

Sin embargo, la forma en que lo hice fue desinstalar completamente cocoapods y reinstalarlo para que fuera una nueva instalación. También cerré Unity en el proceso para asegurarme de que se instaló limpiamente a través de Play Services Resolver.

Había estado usando instalaciones antiguas de cocoapods en proyectos más antiguos. No estoy seguro de qué cambió en el último año para que una nueva instalación fuera el mejor enfoque: simplemente actualizar la instalación de cocoapods local a través de la terminal también puede funcionar, pero estaba al borde de mi ingenio;).

Creo que me di cuenta de cuál era el problema. Estaba construyendo el proyecto Unity desde el archivo del proyecto, mientras que con cocoapods necesitas abrir el proyecto en xcode desde el archivo del espacio de trabajo, ya que incluye el proyecto Unity Y el proyecto cocoapods. Nunca antes creó nada desde el archivo del espacio de trabajo con Unity. Mi error. @flamepygmy

Esto funcionó para mí. ¡Gracias!

Abra y cree Unity-iPhone.xcworkspace lugar de Unity-iPhone.xcodeproj

Todavía no pude generar una compilación funcional con Unity 2019.3.
Estas correcciones ya se enviaron mediante "solicitud de extracción" y hay algunas estimaciones para su lanzamiento. Unity 2019.3 se lanzó el 28 de enero, son aproximadamente 6 meses y el SDK de Facebook aún no se ha hecho compatible con él.

¿Fue útil esta página
0 / 5 - 0 calificaciones