Facebook-sdk-for-unity: Unity 2019.3 - Falta RegisterMonoModule.h

Creado en 26 nov. 2019  ·  11Comentarios  ·  Fuente: facebook/facebook-sdk-for-unity

## Lista de Verificación

## 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: 2019.3.12b
  • Versión del SDK de Unity: 7.18.0, 7.17.2
  • Plataforma de instalación y versión: [iOS] versión 10.0+

    Metas

    Compilación para iOS con Unity 2019.3

    Resultados previstos

    Construcción exitosa

    Resultados actuales

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?

  1. Cree un proyecto vacío en 2019.3+
  2. Agregar FB SDK 7.18.0 o 7.17.2
  3. Intenta construir para un IOS
bug

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:

#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

Todos 11 comentarios

¿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é:

  • Cree un archivo RegisterMonoModules.h vacío
  • Copie esto dentro de 'Unity /..../ Trampoline / ..' junto a FBUnityInterface.h
  • Después de construir con éxito su proyecto, cópielo a la biblioteca en XCode también

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 ...

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