## 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:
2019.3.12b
7.18.0, 7.17.2
Versão e plataforma de instalação: [iOS]
version 10.0+
Construir para iOS usando Unity 2019.3
Construção bem sucedida
A compilação falha porque RegisterMonoModule.h não é mais fornecido no Unity 2019.3 por design: https://issuetracker.unity3d.com/issues/filenotfoundexception-when-building-a-project-with-facebook-sdk-for-ios
Como a versão mínima com suporte do Unity já é 5.4, você pode simplesmente remover a parte FixUp relacionada com RegisterMonoModules.cpp e RegisterMonoModules.hi supor e remover as linhas 21-27 do FBUnityInterface.h.
## Passos para reproduzir
Quais são as etapas necessárias para reproduzir esse problema?
Você encontrou uma solução?
Você encontrou uma solução?
Apenas remover #include "RegisterMonoModules.h"
do Facebook / FacebookSDK / SDK / Editor / iOS / FBUnityInterface.h e sempre incluir UnityTrampolineConfigure.h
funcionou para nós.
O RegisterModules.h
era um arquivo com apenas um método: void RegisterMonoModules();
Na unidade 2019.3, eles sabiamente o removeram.
Mas o SDK do Facebook está pedindo este arquivo apenas para adicionar um HAS_UNITY_VERSION_DEF se a unidade for mais recente que 4.3 xD
https://github.com/facebook/facebook-sdk-for-unity/blob/f76fd1cec1f08a36d90b21c8ab74cba1168f0d84/Facebook.Unity.Editor/iOS/FixupFiles.cs
Portanto, também alterei o FBUnityInterface.h para sempre incluir o UnityTrampolineConfigure.h (para manter o mesmo comportamento que tínhamos).
Eu também tenho esse problema!
Removi #include "RegisterMonoModules.h"
Mas ainda falha com /Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.h:24:9: Módulo 'FBSDKCoreKit' não encontrado
Até o Facebook lançar uma atualização, a melhor solução está abaixo entre as que tentei:
Esse arquivo é inútil agora, mas o FB SDK ainda depende dele.
Este arquivo também é referenciado no script de pós-processo que interrompe o pós-processo.
Alguém já encontrou uma solução alternativa para isso?
Eu comentei a linha "#include RegisterModules.h", mas quando reconstruí o jogo, ainda dizia que o RegisterModules.h não foi encontrado.
@ h3902340 Isso ocorre porque uma das dlls também tem uma referência a RegisterModules.h.
Olá, acabei de atualizar meu SDK do Facebook para Unity para 7.18.1, ele removeu a linha "#include RegisterModules.h", mas esta linha de código ainda faz referência a RegisterMonoModules.h, então o console ainda está reclamando de não encontrar o Arquivo RegisterMonoModules.h. Como essa linha de código está em um arquivo dll, não há uma solução fácil para esse problema. Corrija-o o mais rápido possível.
As compilações locais foram criadas apesar do erro, mas as compilações no modo de lote falharam devido à falta do arquivo.
Além de remover o #include "RegisterMonoModules.h" do Facebook / FacebookSDK / SDK / Editor / iOS / FBUnityInterface.h e sempre incluir o UnityTrampolineConfigure.h.
Estamos usando esta solução alternativa para ter um arquivo falso:
#if UNITY_2019_3_OR_NEWER
using System.IO;
using UnityEditor;
using UnityEditor.Callbacks;
namespace BuildTools.Editor
{
public static class TemporaryFacebookFix20193
{
[PostProcessBuild(99)]
static void BeforeFacebookOnPostProcessBuild(BuildTarget target, string pathToBuiltProject)
{
if(target != BuildTarget.iOS)
{
return;
}
var fullPath = Path.Combine(pathToBuiltProject, Path.Combine("Libraries", "RegisterMonoModules.h"));
if(!File.Exists(fullPath))
{
File.Create(fullPath).Close();
}
}
}
}
#endif
Repetindo @ h3902340
Parece que 177ff89235716c0f9c4225cf9c11355115da2282 removeu o #include "RegisterMonoModules.h"
. No entanto, o código que depende de RegisterMonoModules.h ainda está no mestre:
Isso também significa que HAS_UNITY_VERSION_DEF
nunca será definido em FBUnityInterface.h (essa definição veio do RegisterMonoModules.h modificado), portanto, o pré-processador inclui:
#if HAS_UNITY_VERSION_DEF
#include "UnityTrampolineConfigure.h"
#endif
Este arquivo seria incluído em versões anteriores do Facebook SDK for Unity ao compilar para Unity 4.3+. Não tenho certeza se este foi um efeito colateral pretendido de 177ff89235716c0f9c4225cf9c11355115da2282 (o commit que mencionei acima).
_Atualização referente a HAS_UNITY_VERSION_DEF: _
UnityTrampolineConfigure.h é basicamente um arquivo gerado automaticamente pelo Unity contendo:
#define UNITY_VERSION 201930
// known unity versions
#define UNITY_4_2_0 420
#define UNITY_4_2_1 421
#define UNITY_4_2_2 422
// ---8<---
#define UNITY_2019_1_0 201910
#define UNITY_2019_2_0 201920
#define UNITY_2019_3_0 201930
Portanto, parece que #include "UnityTrampolineConfigure.h" e o #ifdef ao seu redor podem ser removidos sem problemas, já que UNITY_VERSION não é usado em nenhum lugar do SDK ...
Comentários muito úteis
As compilações locais foram criadas apesar do erro, mas as compilações no modo de lote falharam devido à falta do arquivo.
Além de remover o #include "RegisterMonoModules.h" do Facebook / FacebookSDK / SDK / Editor / iOS / FBUnityInterface.h e sempre incluir o UnityTrampolineConfigure.h.
Estamos usando esta solução alternativa para ter um arquivo falso: