Facebook-sdk-for-unity: O aplicativo trava ao iniciar ao usar o SDK v7.21.2 no dispositivo iOS 11

Criado em 18 ago. 2020  ·  8Comentários  ·  Fonte: facebook/facebook-sdk-for-unity

Meio Ambiente

Descreva seu ambiente de desenvolvimento aqui, dando o máximo de detalhes possível. Se você os tiver, certifique-se de incluir:

  • Versão do Editor do Unity: 2018.4.26f1
  • Versão do SDK do Unity: 7.21.2
  • Código X: 11.6
  • Versão e plataforma de instalação: iPad4,4 running [iOS] version 11.3.1

resultados esperados

Nenhum acidente

Resultados reais

Falha do jogo no lançamento:

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

A mesma compilação está funcionando bem no dispositivo com iOS 12.4.4 e 13.6

Passos para reproduzir

Basta fazer uma construção simples usando a versão especificada

bug

Comentários muito úteis

Depois de demorar muitas horas e tentar várias vezes, encontrei uma maneira de resolver esse problema. Espero que ajude você também.
Adicione isto ao seu 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 comentários

Também é facilmente reproduzível com o simulador iOS :(

Estou usando o seguinte script de pós-criação como uma solução alternativa para não travar no 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());
    }
}

Depois de demorar muitas horas e tentar várias vezes, encontrei uma maneira de resolver esse problema. Espero que ajude você também.
Adicione isto ao seu PostProcessBuild:

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

Tive o mesmo problema com ios <12.2 e encontrei a mesma solução alternativa com LD_RUNPATH_SEARCH_PATHS além de ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES.

Seria ótimo adicionar documentação explícita de que eles são necessários se um jogo oferecer suporte a versões mais antigas do sistema operacional na documentação principal e no registro de alterações.

Também estou tendo esse "aplicativo trava ao iniciar" com meu jogo Unity, mas meu iPhone XS tem iOS 13.6.1

Unity.4.9f1 2019
Facebook SDK 7.21.2
iOS 13.6.1

=> Bater

Antes de atualizar para o FBSDK 7.21.2, o projeto tinha o FBSDK 7.19.0 e o jogo funcionou sem travar.

Tentei:

project.SetBuildProperty (targetId, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "YES");
project.AddBuildProperty (targetGuid, "LD_RUNPATH_SEARCH_PATHS", "$ (herdado) @ executable_path / Frameworks");

mas recebi este erro ao enviar:

ERROR ITMS-90206: "Pacote inválido. O pacote em 'xxxxx.app/Frameworks/UnityFramework.framework' contém o arquivo não permitido 'Frameworks'."
O status de retorno do iTunes Transporter era 1: ERROR ITMS-90206: "Pacote inválido. O pacote em 'xxxxx.app/Frameworks/UnityFramework.framework' contém o arquivo não permitido 'Frameworks'."

Acho que ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES causa esse erro para o Unity 2019.4.9f1 porque quando removi a segunda linha (LD_RUNPATH_SEARCH_PATHS) e recompilei, ainda obtive o mesmo erro de Pacote inválido.

Atualmente, tenho que voltar para o FBSDK 7.19.0 e não há mais travamento.

Eu tive o mesmo problema com o FBSDK 8.1.0 também.
ios 11 <= travar após atualizar o FBSDK de 7.18.1

Também estou tendo esse "aplicativo trava ao iniciar" com meu jogo Unity, mas meu iPhone XS tem iOS 13.6.1

Unity.4.9f1 2019
Facebook SDK 7.21.2
iOS 13.6.1

=> Bater

Antes de atualizar para o FBSDK 7.21.2, o projeto tinha o FBSDK 7.19.0 e o jogo funcionou sem travar.

Tentei:

project.SetBuildProperty (targetId, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "YES");
project.AddBuildProperty (targetGuid, "LD_RUNPATH_SEARCH_PATHS", "$ (herdado) @ executable_path / Frameworks");

mas recebi este erro ao enviar:

ERROR ITMS-90206: "Pacote inválido. O pacote em 'xxxxx.app/Frameworks/UnityFramework.framework' contém o arquivo não permitido 'Frameworks'."
O status de retorno do iTunes Transporter era 1: ERROR ITMS-90206: "Pacote inválido. O pacote em 'xxxxx.app/Frameworks/UnityFramework.framework' contém o arquivo não permitido 'Frameworks'."

Acho que ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES causa esse erro para o Unity 2019.4.9f1 porque quando removi a segunda linha (LD_RUNPATH_SEARCH_PATHS) e recompilei, ainda obtive o mesmo erro de Pacote inválido.

Atualmente, tenho que voltar para o FBSDK 7.19.0 e não há mais travamento.

Eu também tenho
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 resolver, eu apenas apaguei meu arquivo atual e arquivei novamente, então ele aceitou

Encontrei um formulário de trabalho, verifique este link:
https://github.com/facebook/facebook-sdk-for-unity/issues/193#issuecomment -754953304

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

Duke74 picture Duke74  ·  4Comentários

michelleran picture michelleran  ·  4Comentários

SeriouslySam picture SeriouslySam  ·  6Comentários

edscodeblenders picture edscodeblenders  ·  4Comentários

derwaldgeist picture derwaldgeist  ·  4Comentários