## Контрольный список
## Среда
Опишите здесь свою среду разработки, предоставив как можно больше подробностей. Если они у вас есть, обязательно включите:
2019.3.12b
7.18.0, 7.17.2
Платформа и версия установки: [iOS]
version 10.0+
Сборка для iOS с использованием Unity 2019.3
Удачная сборка
Сбой компиляции, потому что RegisterMonoModule.h больше не предоставляется в Unity 2019.3 по дизайну: https://issuetracker.unity3d.com/issues/filenotfoundexception-when-building-a-project-with-facebook-sdk-for-ios
Поскольку минимальная поддерживаемая версия Unity - уже 5.4, вы можете просто удалить часть FixUp, связанную с RegisterMonoModules.cpp и RegisterMonoModules.hi, и удалить строки 21–27 из FBUnityInterface.h.
## Действия по воспроизведению
Что нужно сделать, чтобы воспроизвести эту проблему?
Вы нашли решение?
Вы нашли решение?
Простое удаление #include "RegisterMonoModules.h"
из Facebook / FacebookSDK / SDK / Editor / iOS / FBUnityInterface.h и постоянное включение UnityTrampolineConfigure.h
сработало для нас.
RegisterModules.h
это был файл только с методом: void RegisterMonoModules();
В Unity 2019.3 его мудро удалили.
Но Facebook SDK запрашивает этот файл только для добавления HAS_UNITY_VERSION_DEF, если unity новее, чем 4.3 xD.
https://github.com/facebook/facebook-sdk-for-unity/blob/f76fd1cec1f08a36d90b21c8ab74cba1168f0d84/Facebook.Unity.Editor/iOS/FixupFiles.cs
Итак, я также изменил FBUnityInterface.h, чтобы всегда включать UnityTrampolineConfigure.h (чтобы сохранить то же поведение, что и у нас).
У меня тоже такая проблема!
Я удалил #include "RegisterMonoModules.h"
Но он по-прежнему не работает с /Pods/Headers/Public/FBSDKShareKit/FBSDKShareKit/FBSDKHashtag.h:24:9: Модуль 'FBSDKCoreKit' не найден
Пока Facebook не выпустит обновление, лучшее решение из тех, которые я пробовал, находится ниже:
Этот файл сейчас бесполезен, но FB SDK все еще зависит от него.
На этот файл также ссылается сценарий постпроцесса, который прерывает постпроцесс.
Кто-нибудь еще придумал обходной путь для этого?
Я прокомментировал строку «#include RegisterModules.h», но когда я перекомпилировал игру, в ней все еще говорилось, что RegisterModules.h не может быть найден.
@ h3902340 Это потому, что одна из dll также имеет ссылку на RegisterModules.h.
Привет, я только что обновил свой Facebook SDK для Unity до 7.18.1, он удалил строку "#include RegisterModules.h", но эта строка кода все еще ссылается на RegisterMonoModules.h, поэтому консоль все еще жалуется на то, что не нашла Файл RegisterMonoModules.h. Поскольку эта строка кода находится в файле dll, простого решения этой проблемы нет, исправьте ее как можно скорее.
Несмотря на ошибку, локальные сборки были построены, но сборки в пакетном режиме завершились неудачно из-за отсутствия файла.
Помимо удаления #include «RegisterMonoModules.h» из Facebook / FacebookSDK / SDK / Editor / iOS / FBUnityInterface.h и всегда включая UnityTrampolineConfigure.h.
Мы используем этот обходной путь, чтобы получить поддельный файл:
#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
Повторение @ h3902340
Кажется, 177ff89235716c0f9c4225cf9c11355115da2282 удалил #include "RegisterMonoModules.h"
. Однако код, зависящий от RegisterMonoModules.h, все еще находится в главном:
Это также означает, что HAS_UNITY_VERSION_DEF
никогда не будет определено в FBUnityInterface.h (это определение взято из измененного RegisterMonoModules.h), поэтому препроцессор удаляет это, включая:
#if HAS_UNITY_VERSION_DEF
#include "UnityTrampolineConfigure.h"
#endif
Этот файл будет включен в предыдущие версии Facebook SDK для Unity при сборке для Unity 4.3+. Я не совсем уверен, был ли это побочный эффект 177ff89235716c0f9c4225cf9c11355115da2282 (коммит, о котором я упоминал выше).
_Update re HAS_UNITY_VERSION_DEF: _
UnityTrampolineConfigure.h - это автоматически созданный Unity файл, содержащий:
#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
Кажется, что #include "UnityTrampolineConfigure.h" и окружающий его #ifdef можно удалить без проблем, поскольку UNITY_VERSION нигде в SDK не используется ...
Самый полезный комментарий
Несмотря на ошибку, локальные сборки были построены, но сборки в пакетном режиме завершились неудачно из-за отсутствия файла.
Помимо удаления #include «RegisterMonoModules.h» из Facebook / FacebookSDK / SDK / Editor / iOS / FBUnityInterface.h и всегда включая UnityTrampolineConfigure.h.
Мы используем этот обходной путь, чтобы получить поддельный файл: