Facebook-sdk-for-unity: Unity 2019.3 - biblioteca não encontrada para -lFBSDKCoreKit

Criado em 24 mar. 2020  ·  16Comentários  ·  Fonte: facebook/facebook-sdk-for-unity

Lista de controle

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: 2019.3.6f1
  • Versão do SDK do Unity: 7.19.1
  • Plataforma de instalação e Verison: iOS version 10+ XCode 11.3.1 '

Metas

Construir para iOS usando Unity 2019.3

resultados esperados

Construção bem sucedida

Resultados reais

A compilação falha porque a biblioteca -lFBSDKCoreKit não foi encontrada.
Outros problemas foram fechados, mas não corrigidos no Facebook SDK 7.19+:

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

Passos para reproduzir

Crie um novo projeto na unidade
Instale o pacote FB SDK (7.19.1)
Projeto Build Unity (2019.3.6f1)
Tente construir o projeto Xcode no Xcode (versão 11.3.1)
Verifique os erros

bug

Comentários muito úteis

Eu tive o mesmo problema. Embora não importasse como eu definisse minha geração de cocoapod no Unity Play Services Resolver, o .xcworkspace não estava sendo criado.

Como eu consertei:
abra o terminal na pasta raiz do seu projeto e execute
pod install
isso criou o arquivo .xcworkspace. Depois de abri-lo, adicionar informações de assinatura etc. como de costume e, em seguida, compilá-lo, ele finalmente funcionou.

Todos 16 comentários

Tenho exatamente o mesmo problema.
Unidade: 2019.3.6f1
FB SDK: (7.19.1)
XCode: 11.3.1

Exatamente o mesmo problema.
Unidade: 2018.4.5f1 (LTS)
FB SDK: 7.19.1
XCode: 11.3.1

Acho que descobri qual era o problema. Eu estava construindo o projeto Unity a partir do arquivo de projeto, enquanto com cocoapods você precisa abrir o projeto no xcode do arquivo de espaço de trabalho , pois inclui o projeto de unidade E o projeto cocoapods. Nunca criei nada a partir do arquivo do espaço de trabalho antes com o Unity. Foi mal.

@flamepygmy
Isso também resolveu o problema para mim. :-)
Não estou familiarizado com o XCode, mas acho que um espaço de trabalho é comparável a uma solução do Visual Studio. Até agora, eu sempre tinha apenas clicado duas vezes no arquivo .xcodeproj.

Eu tive o mesmo problema. Embora não importasse como eu definisse minha geração de cocoapod no Unity Play Services Resolver, o .xcworkspace não estava sendo criado.

Como eu consertei:
abra o terminal na pasta raiz do seu projeto e execute
pod install
isso criou o arquivo .xcworkspace. Depois de abri-lo, adicionar informações de assinatura etc. como de costume e, em seguida, compilá-lo, ele finalmente funcionou.

No momento, estou migrando meu jogo normal para 2019.3 também e estou enfrentando o mesmo problema.

Este parece ser um problema onde FBSDKCOCOAPODS=1 está sendo incluído como uma macro de pré-processador do destino principal ( Unity-iPhone ) em vez de UnityFramework , que é o alvo do IOSResolver e inclui todo o código-fonte exportado ao construir o espaço de trabalho XCode.

Sem esta macro, FBSDKCoreKitImport.h acabará apontando para a inclusão / importação errada:

#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

Olhando para o código-fonte do SDK do Facebook, acho que o problema está no FixupFiles.cs :
`` `c #
public static void AddBuildFlag (caminho da string)
{
string projPath = Path.Combine (path, Path.Combine ("Unity-iPhone.xcodeproj", "project.pbxproj"));
Projeto PBX proj = novo Projeto PBX ();
proj.ReadFromString (File.ReadAllText (projPath));
string targetGUID = proj.TargetGuidByName ("Unity-iPhone");
proj.AddBuildProperty (targetGUID, "GCC_PREPROCESSOR_DEFINITIONS", "$ (herdado) FBSDKCOCOAPODS = 1");
proj.AddBuildProperty (targetGUID, "OTHER_LDFLAGS", "-ObjC");
proj.AddFrameworkToProject (targetGUID, "Accelerate.framework", true);
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()); }

Estive lutando com um problema adjacente em 2019.3, ele cria, mas não funciona. Agradeceria qualquer orientação. Problema muito semelhante aos OPs, então não tenho certeza se justifica um problema separado.

@felippeduran Tentei sua correção e construiu as DLLs SDK a partir da fonte, ainda obtendo o mesmo erro que recebia 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:

Isso acabou sendo um problema com um mediador de anúncios integrando o Facebook Audience Network, e não o Facebook Unity SDK. Se você tiver uma saída semelhante à minha, foi o plug-in de mediação Appodeal que causou isso. Caso contrário, por favor, desconsidere este comentário.

EDIT 2:

Para futura referência de pesquisa no Google, já que não consegui encontrar esse problema específico, a solução para o meu problema foi simplesmente adicionar diretamente as estruturas à seção Embed Frameworks das fases de construção do destino Unity-iPhone.

@aVolnov , minha correção sugerida funcionou para você então?

@felippeduran Não tenho certeza, já que meu problema acabou por ser uma besta completamente diferente.

@flamepygmy você acabou de salvar minha vida. Perdi tantas horas neste :(

Sim, o pipeline do Unity iOS é realmente sujeito a erros ... Tantas peças que precisam trabalhar juntas, completamente imprevisíveis se alguma atualização de pacote quebrar alguma coisa.

Comentar a sugestão de @flo-wolf também corrigiu esse problema para mim em 09/03/2019.

No entanto, a maneira como fiz isso foi desinstalar completamente o cocoapods e reinstalá-lo para que fosse uma instalação nova. Eu também fechei o Unity no processo para ter certeza de que foi instalado corretamente por meio do Play Services Resolver.

Eu estava usando antigas instalações de cocoapods em projetos mais antigos. Não tenho certeza do que mudou no ano passado para torná-lo uma nova instalação foi a melhor abordagem - apenas atualizar a instalação de coco local via terminal pode funcionar também, mas eu estava perdendo o juízo;).

Acho que descobri qual era o problema. Eu estava construindo o projeto Unity a partir do arquivo de projeto, enquanto com cocoapods você precisa abrir o projeto no xcode do arquivo de espaço de trabalho, pois inclui o projeto de unidade E o projeto cocoapods. Nunca criei nada a partir do arquivo do espaço de trabalho antes com o Unity. Foi mal. @flamepygmy

Isso funcionou para mim. Obrigada!

Abra e construa Unity-iPhone.xcworkspace vez de Unity-iPhone.xcodeproj

Ainda não consegui gerar um Working Build with Unity 2019.3.
Essas correções já foram enviadas por "pull request" e existem algumas estimativas para lançamento? O Unity 2019.3 foi lançado em 28 de janeiro, tem cerca de 6 meses e o SDK do Facebook ainda não foi compatível com ele.

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