##清单
## 环境
在此处描述您的开发环境,并提供尽可能多的详细信息。 如果有它们,请确保包括:
2019.3.12b
7.18.0, 7.17.2
安装平台及版本: [iOS]
版本10.0+
使用 Unity 2019.3 为 iOS 构建
构建成功
编译失败,因为 Unity 2019.3 中不再按设计提供 RegisterMonoModule.h: https :
由于 Unity 支持的最低版本已经是 5.4,您可以简单地删除与 RegisterMonoModules.cpp 和 RegisterMonoModules.hi 相关的 FixUp 部分,并从 FBUnityInterface.h 中删除第 21-27 行。
## 重现步骤
重现此问题所需的步骤是什么?
您找到解决方案了吗?
您找到解决方案了吗?
只需从Facebook/FacebookSDK/SDK/Editor/iOS/FBUnityInterface.h 中删除#include "RegisterMonoModules.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: Module 'FBSDKCoreKit' not found
在 Facebook 发布更新之前,我尝试过的最佳解决方案如下:
该文件现在没用了,但 FB SDK 仍然依赖它。
该文件也从后处理脚本中引用,该
有没有人为此提出解决方法?
我已经评论了“#include RegisterModules.h”这一行,但是当我重建游戏时,它仍然说找不到 RegisterModules.h。
@h3902340这是因为其中一个 dll 也引用了 RegisterModules.h。
嗨,我刚刚将我的Facebook SDK for Unity升级到7.18.1,它删除了“ #include RegisterModules.h”行,但是此行代码仍在引用RegisterMonoModules.h,因此控制台仍在抱怨找不到该行。 RegisterMonoModules.h文件。 由于这行代码在一个dll文件中,这个问题没有简单的解决方法,请尽快修复。
尽管出现错误,但本地构建仍被构建,但由于缺少文件,批处理模式下的构建失败。
除了从 Facebook/FacebookSDK/SDK/Editor/iOS/FBUnityInterface.h 中删除 #include "RegisterMonoModules.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 的代码仍在 master 中:
这也意味着HAS_UNITY_VERSION_DEF
永远不会在 FBUnityInterface.h 中定义(该定义来自修改后的 RegisterMonoModules.h),因此预处理器会删除包括:
#if HAS_UNITY_VERSION_DEF
#include "UnityTrampolineConfigure.h"
#endif
在为Unity 4.3+构建时,此文件将包含在Unity的Facebook SDK的早期版本中。 我不太确定这是否是 177ff89235716c0f9c4225cf9c11355115da2282(我上面提到的提交)的预期副作用。
_更新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中没有使用......
最有用的评论
尽管出现错误,但本地构建仍被构建,但由于缺少文件,批处理模式下的构建失败。
除了从 Facebook/FacebookSDK/SDK/Editor/iOS/FBUnityInterface.h 中删除 #include "RegisterMonoModules.h" 并始终包含 UnityTrampolineConfigure.h。
我们正在使用此解决方法来创建假文件: