Facebook-sdk-for-unity: La aplicación se bloquea al iniciarse cuando se usa SDK v7.21.2 en un dispositivo iOS 11

Creado en 18 ago. 2020  ·  8Comentarios  ·  Fuente: facebook/facebook-sdk-for-unity

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: 2018.4.26f1
  • Versión del SDK de Unity: 7.21.2
  • XCode: 11.6
  • Plataforma de instalación y versión: iPad4,4 running [iOS] versión 11.3.1

Resultados previstos

Sin accidente

Resultados actuales

Bloqueo del juego al iniciarse:

dyld: Library not loaded: @rpath/libswiftCore.dylib Referenced from: /var/containers/Bundle/Application/6A540FA0-A178-4762-BE4D-1A32AC021D5C/XX.app/XX Reason: image not found

La misma compilación se está ejecutando bien en el dispositivo con iOS 12.4.4 y 13.6

Pasos para reproducir

Simplemente haz una compilación simple usando la versión especificada

bug

Comentario más útil

Después de que tardé muchas horas y lo intenté muchas veces, encontré una manera de resolver este problema. Espero que también te ayude.
Agregue esto a su PostProcessBuild:

// Fixed Facebook SDK 7.21.2 issue for iOS < 12.2
project.AddBuildProperty(targetGuid, "LD_RUNPATH_SEARCH_PATHS", "$(inherited) @executable_path/Frameworks");

Todos 8 comentarios

También es fácilmente reproducible con el simulador de iOS :(

Estoy usando el siguiente script de compilación posterior como una solución para no fallar en iOS 11:

public class FacebookCrashIOS11 : ScriptableObject
{
    [PostProcessBuild]
    public static void OnPostProcess(BuildTarget buildTarget, string buildPath)
    {
        // Only for iOS
        if (buildTarget != BuildTarget.iOS)
        {
            return;
        }

        string projectPath = PBXProject.GetPBXProjectPath(buildPath);
        PBXProject project = new PBXProject();

        // Read.
        project.ReadFromString(File.ReadAllText(projectPath));
        string targetGUID = project.GetUnityMainTargetGuid();

        project.SetBuildProperty(targetGUID, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "YES"); // Facebook 7.21.2 crashed on iOS 11.0 without this line

        // Write.
        File.WriteAllText(projectPath, project.WriteToString());
    }
}

Después de que tardé muchas horas y lo intenté muchas veces, encontré una manera de resolver este problema. Espero que también te ayude.
Agregue esto a su PostProcessBuild:

// Fixed Facebook SDK 7.21.2 issue for iOS < 12.2
project.AddBuildProperty(targetGuid, "LD_RUNPATH_SEARCH_PATHS", "$(inherited) @executable_path/Frameworks");

Tuve el mismo problema con ios <12.2 y encontré la misma solución con LD_RUNPATH_SEARCH_PATHS además de ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES.

Sería genial agregar documentación explícita de que estos son necesarios si un juego admite versiones de SO anteriores en la documentación principal y en el registro de cambios.

También estoy experimentando esta "aplicación se bloquea al iniciarse" con mi juego Unity, pero mi iPhone XS tiene iOS 13.6.1

Unidad 2019.4.9f1
SDK de Facebook 7.21.2
iOS 13.6.1

=> Choque

Antes de actualizar a FBSDK 7.21.2, el proyecto tenía FBSDK 7.19.0 y el juego funcionaba sin fallas.

Lo intenté:

project.SetBuildProperty (targetId, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "SÍ");
project.AddBuildProperty (targetGuid, "LD_RUNPATH_SEARCH_PATHS", "$ (heredado) @ ruta_ejecutable / Frameworks");

pero obtuve este error al cargar:

ERROR ITMS-90206: "Paquete no válido. El paquete en 'xxxxx.app/Frameworks/UnityFramework.framework' contiene el archivo no permitido 'Frameworks'."
El estado de retorno de iTunes Transporter era 1: ERROR ITMS-90206: "Paquete no válido. El paquete en 'xxxxx.app/Frameworks/UnityFramework.framework' contiene el archivo no permitido 'Frameworks'".

Supongo que ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES causa este error para Unity 2019.4.9f1 porque cuando eliminé la segunda línea (LD_RUNPATH_SEARCH_PATHS) y la reconstruí, todavía recibí el mismo error de paquete no válido.

Actualmente tengo que volver a FBSDK 7.19.0 y no más fallas.

También tuve el mismo problema con FBSDK 8.1.0.
ios 11 <= falla después de actualizar FBSDK desde 7.18.1

También estoy experimentando esta "aplicación se bloquea al iniciarse" con mi juego Unity, pero mi iPhone XS tiene iOS 13.6.1

Unidad 2019.4.9f1
SDK de Facebook 7.21.2
iOS 13.6.1

=> Choque

Antes de actualizar a FBSDK 7.21.2, el proyecto tenía FBSDK 7.19.0 y el juego funcionaba sin fallas.

Lo intenté:

project.SetBuildProperty (targetId, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "SÍ");
project.AddBuildProperty (targetGuid, "LD_RUNPATH_SEARCH_PATHS", "$ (heredado) @ ruta_ejecutable / Frameworks");

pero obtuve este error al cargar:

ERROR ITMS-90206: "Paquete no válido. El paquete en 'xxxxx.app/Frameworks/UnityFramework.framework' contiene el archivo no permitido 'Frameworks'."
El estado de retorno de iTunes Transporter era 1: ERROR ITMS-90206: "Paquete no válido. El paquete en 'xxxxx.app/Frameworks/UnityFramework.framework' contiene el archivo no permitido 'Frameworks'".

Supongo que ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES causa este error para Unity 2019.4.9f1 porque cuando eliminé la segunda línea (LD_RUNPATH_SEARCH_PATHS) y la reconstruí, todavía recibí el mismo error de paquete no válido.

Actualmente tengo que volver a FBSDK 7.19.0 y no más fallas.

Yo tambien tengo
Return status of iTunes Transporter was 1: ERROR ITMS-90206: "Invalid Bundle. The bundle at 'xxxxx.app/Frameworks/UnityFramework.framework' contains disallowed file 'Frameworks'."

para resolverlo, eliminé mi archivo actual y lo volví a archivar, luego acepté

Encontré un formulario que funciona, consulte este enlace:
https://github.com/facebook/facebook-sdk-for-unity/issues/193#issuecomment -754953304

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