## Lista de Verificación
## Ambiente
Describe aquí tu entorno de desarrollo, dando tantos detalles como sea posible. Si los tiene, asegúrese de incluir:
2019.3.12b
7.18.0, 7.17.2
Plataforma de instalación y versión: [iOS]
versión 10.0+
Compilación para iOS con Unity 2019.3
Construcción exitosa
La compilación falla porque RegisterMonoModule.h ya no se proporciona en Unity 2019.3 por diseño: https://issuetracker.unity3d.com/issues/filenotfoundexception-when-building-a-project-with-facebook-sdk-for-ios
Dado que la versión mínima compatible con Unity ya es 5.4, simplemente puede eliminar la parte FixUp relacionada con RegisterMonoModules.cpp y RegisterMonoModules.hi adivinar y eliminar las líneas 21-27 de FBUnityInterface.h.
## Pasos para reproducir
¿Cuáles son los pasos necesarios para reproducir este problema?
¿Encontraste una solución?
¿Encontraste una solución?
Simplemente eliminar el #include "RegisterMonoModules.h"
de Facebook / FacebookSDK / SDK / Editor / iOS / FBUnityInterface.hy siempre incluir el UnityTrampolineConfigure.h
funcionó para nosotros.
El RegisterModules.h
era un archivo con solo un método: void RegisterMonoModules();
En la unidad 2019.3, sabiamente lo han eliminado.
Pero el SDK de Facebook solicita este archivo solo para agregar un HAS_UNITY_VERSION_DEF si la unidad es más reciente que 4.3 xD
https://github.com/facebook/facebook-sdk-for-unity/blob/f76fd1cec1f08a36d90b21c8ab74cba1168f0d84/Facebook.Unity.Editor/iOS/FixupFiles.cs
Entonces, también cambié FBUnityInterface.h para incluir siempre UnityTrampolineConfigure.h (para mantener el mismo comportamiento que teníamos).
¡También tengo este problema!
Eliminé #include "RegisterMonoModules.h"
Pero aún falla con /Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.h:24:9: Módulo 'FBSDKCoreKit' no encontrado
Hasta que Facebook emita una actualización, la mejor solución se encuentra a continuación entre las que probé:
Ese archivo ahora es inútil, pero FB SDK todavía depende de él.
También se hace referencia a este archivo desde la secuencia de comandos del proceso posterior que interrumpe el proceso posterior.
¿Alguien ha encontrado una solución para esto todavía?
He comentado la línea "#include RegisterModules.h", pero cuando reconstruí el juego, todavía decía que no se podía encontrar RegisterModules.h.
@ h3902340 Esto se debe a que uno de los dlls también tiene una referencia a RegisterModules.h.
Hola, acabo de actualizar mi SDK de Facebook para Unity a 7.18.1, eliminó la línea "#include RegisterModules.h", pero esta línea de código todavía hace referencia a RegisterMonoModules.h, por lo que la consola sigue quejándose de no encontrar el Archivo RegisterMonoModules.h. Debido a que esta línea de código está en un archivo dll, no hay una solución fácil para este problema, por favor, corríjalo lo antes posible.
Las compilaciones locales se crearon a pesar del error, pero las compilaciones en modo por lotes fallaron debido a que faltaba el archivo.
Además de eliminar el #include "RegisterMonoModules.h" de Facebook / FacebookSDK / SDK / Editor / iOS / FBUnityInterface.hy siempre incluir UnityTrampolineConfigure.h.
Estamos usando esta solución para tener un archivo 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
Repitiendo @ h3902340
Parece que 177ff89235716c0f9c4225cf9c11355115da2282 eliminó el #include "RegisterMonoModules.h"
. Sin embargo, el código que depende de RegisterMonoModules.h todavía está en el maestro:
También significa que HAS_UNITY_VERSION_DEF
nunca se definirá en FBUnityInterface.h (esa definición proviene del RegisterMonoModules.h modificado), por lo que el preprocesador elimina esto:
#if HAS_UNITY_VERSION_DEF
#include "UnityTrampolineConfigure.h"
#endif
Este archivo se incluiría en versiones anteriores del SDK de Facebook para Unity al compilar para Unity 4.3+. No estoy muy seguro de si este fue un efecto secundario previsto de 177ff89235716c0f9c4225cf9c11355115da2282 (el compromiso que mencioné anteriormente).
_Actualización de HAS_UNITY_VERSION_DEF: _
UnityTrampolineConfigure.h es básicamente un archivo generado automáticamente por Unity que contiene:
#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
Entonces parece que #include "UnityTrampolineConfigure.h" y el #ifdef que lo rodea se puede eliminar sin problemas, ya que UNITY_VERSION no se usa en ninguna parte del SDK ...
Comentario más útil
Las compilaciones locales se crearon a pesar del error, pero las compilaciones en modo por lotes fallaron debido a que faltaba el archivo.
Además de eliminar el #include "RegisterMonoModules.h" de Facebook / FacebookSDK / SDK / Editor / iOS / FBUnityInterface.hy siempre incluir UnityTrampolineConfigure.h.
Estamos usando esta solución para tener un archivo falso: