Facebook-sdk-for-unity: Unity 2019.3 - 找不到 -lFBSDKCoreKit 的库

创建于 2020-03-24  ·  16评论  ·  资料来源: facebook/facebook-sdk-for-unity

清单

环境

在此处描述您的开发环境,并提供尽可能多的详细信息。 如果有它们,请确保包括:

  • Unity 编辑器版本: 2019.3.6f1
  • Unity SDK 版本: 7.19.1
  • 安装平台和版本: iOS版本10+ XCode 11.3.1'

目标

使用 Unity 2019.3 为 iOS 构建

预期成绩

构建成功

实际结果

编译失败,因为未找到库-lFBSDKCoreKit。
其他问题已关闭但未在 Facebook SDK 7.19+ 上修复:

https://github.com/facebook/facebook-sdk-for-unity/issues/352
https://github.com/facebook/facebook-sdk-for-unity/issues/350

重现步骤

统一创建新项目
安装 FB SDK 包 (7.19.1)
构建 Unity 项目 (2019.3.6f1)
尝试在 Xcode 上构建 Xcode 项目(版本 11.3.1)
检查错误

最有用的评论

我遇到过同样的问题。 尽管无论我在Unity Play Services解析器中将cocoapod的生成方式设置为什么,都不会创建.xcworkspace。

我是如何修复它的:
在项目的根文件夹中打开终端并运行
pod install
这创建了 .xcworkspace 文件。 打开它后,像往常一样添加签名信息等,然后构建它,它终于起作用了。

所有16条评论

我有完全一样的问题。
统一性:2019.3.6f1
FB SDK:(7.19.1)
XCode:11.3.1

完全一样的问题。
统一:2018.4.5f1 (LTS)
FB SDK:7.19.1
XCode:11.3.1

我想我只是想出了问题所在。 我正在从项目文件构建 Unity 项目,而对于 cocoapods,您需要从工作区文件中在 xcode 中打开该项目,因为它包括统一项目和 cocoapods 项目。 在使用Unity之前,请不要从工作空间文件中构建任何内容。 我的错。

@flamepygmy
这也解决了我的问题。 :-)
我对 XCode 一点都不熟悉,但我想工作区可以与 Visual Studio 解决方案相媲美。 到目前为止,我一直只是双击 .xcodeproj 文件。

我遇到过同样的问题。 尽管无论我在Unity Play Services解析器中将cocoapod的生成方式设置为什么,都不会创建.xcworkspace。

我是如何修复它的:
在项目的根文件夹中打开终端并运行
pod install
这创建了 .xcworkspace 文件。 打开它后,像往常一样添加签名信息等,然后构建它,它终于起作用了。

我目前也在将我的常规游戏迁移到 2019.3,我也面临着同样的问题。

这似乎是一个问题,其中FBSDKCOCOAPODS=1被包含为主要目标( Unity-iPhone )的预处理器宏,而不是UnityFramework ,后者是IOSResolver 的目标,包括构建 XCode 工作区时导出的所有源代码。

如果没有这个宏, FBSDKCoreKitImport.h最终会指向错误的包含/导入:

#if defined BUCK
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#elif defined __cplusplus
#import <FBSDKCoreKit.h>
#elif defined FBSDKCOCOAPODS
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#else
<strong i="13">@import</strong> FBSDKCoreKit;
#endif

查看 Facebook SDK 源代码,我认为问题出在FixupFiles.cs 中
```c#
public static void AddBuildFlag(字符串路径)
{
string projPath = Path.Combine(path, Path.Combine("Unity-iPhone.xcodeproj", "project.pbxproj"));
PBXProject 项目 = 新的 PBXProject();
proj.ReadFromString(File.ReadAllText(projPath));
string targetGUID = proj.TargetGuidByName("Unity-iPhone");
proj.AddBuildProperty(targetGUID, "GCC_PREPROCESSOR_DEFINITIONS", " $(inherited) FBSDKCOCOAPODS=1");
proj.AddBuildProperty(targetGUID, "OTHER_LDFLAGS", "-ObjC");
proj.AddFrameworkToProject(targetGUID, "Accelerate.framework", true);
File.WriteAllText(projPath, proj.WriteToString());
}

It's still looking for the `Unity-iPhone` target when it should be looking for `UnityFramework` instead for Unity 2019.3.

I can submit a pull request with a quick workaround for the issue like the following, just let me know if I'm in the right direction. Also, I don't have much knowledge on this repo source code, so there could be better solutions than this one.

**PBXProject.cs:**
```c#
        /// <summary>
        /// Returns the default main target name in Unity project.
        /// The returned target name can then be used to retrieve the GUID of the target via TargetGuidByName
        /// function. This function can only be used in Unity-generated projects.
        /// </summary>
        /// <returns>The default main target name.</returns>
        public static string GetUnityTargetName()
        {
#if UNITY_2019_3_OR_NEWER
            return "UnityFramework";
#else
            return "Unity-iPhone";
#endif
        }

FixupFiles.cs:
c# public static void AddBuildFlag(string path) { string projPath = Path.Combine(path, Path.Combine("Unity-iPhone.xcodeproj", "project.pbxproj")); PBXProject proj = new PBXProject(); proj.ReadFromString(File.ReadAllText(projPath)); string targetGUID = proj.TargetGuidByName(GetUnityTargetName()); proj.AddBuildProperty(targetGUID, "GCC_PREPROCESSOR_DEFINITIONS", " $(inherited) FBSDKCOCOAPODS=1"); proj.AddBuildProperty(targetGUID, "OTHER_LDFLAGS", "-ObjC"); proj.AddFrameworkToProject(targetGUID, "Accelerate.framework", true); File.WriteAllText(projPath, proj.WriteToString()); }

一直在与 2019.3 上的一个相邻问题搏斗,它构建但不运行。 将不胜感激任何指导。 与 OP 非常相似的问题,所以我不确定它是否值得一个单独的问题。

@felippuran尝试了您的修复并从源代码构建了 SDK DLL,但仍然遇到与之前相同的错误:

2020-04-15 03:25:54.105800+0300 offroad3[35344:6034574] Error loading /var/containers/Bundle/Application/FE59C147-7622-42CD-BE51-39AA849780D6/offroad3.app/Frameworks/UnityFramework.framework/UnityFramework: dlopen(/var/containers/Bundle/Application/FE59C147-7622-42CD-BE51-39AA849780D6/offroad3.app/Frameworks/UnityFramework.framework/UnityFramework, 265): Library not loaded: @rpath/FBSDKCoreKit.framework/FBSDKCoreKit Referenced from: /private/var/containers/Bundle/Application/FE59C147-7622-42CD-BE51-39AA849780D6/offroad3.app/Frameworks/UnityFramework.framework/UnityFramework Reason: image not found 2020-04-15 03:25:54.268034+0300 offroad3[35344:6034574] Error loading /var/containers/Bundle/Application/FE59C147-7622-42CD-BE51-39AA849780D6/offroad3.app/Frameworks/UnityFramework.framework/UnityFramework: dlopen(/var/containers/Bundle/Application/FE59C147-7622-42CD-BE51-39AA849780D6/offroad3.app/Frameworks/UnityFramework.framework/UnityFramework, 265): Library not loaded: @rpath/FBSDKCoreKit.framework/FBSDKCoreKit Referenced from: /private/var/containers/Bundle/Application/FE59C147-7622-42CD-BE51-39AA849780D6/offroad3.app/Frameworks/UnityFramework.framework/UnityFramework Reason: image not found

编辑:

结果证明这是一个集成 Facebook Audience Network 的广告中介的问题,而不是 Facebook Unity SDK。 如果您有与我类似的输出,则是 Appodeal 中介插件导致了这种情况。 否则,请忽略此评论。

编辑2:

对于未来的谷歌搜索参考,由于我找不到这个特定问题,我的问题的解决方案是直接将框架添加到 Unity-iPhone 目标的构建阶段的嵌入框架部分。

@aVolnov ,那么我建议的修复对您

@felippuran我实际上并不确定,因为我的问题完全是一个不同的问题。

@flamepygmy你刚刚救了我的命。 在这件事上浪费了很多时间:(

是的,Unity iOS 管道确实很容易出错......这么多部分必须协同工作,如果任何包更新破坏任何东西,完全不可预测。

评论@flo-wolf 的建议也在 2019.3.9f1 上为我解决了这个问题。

但是,我的处理方式是完全卸载 cocoapods 并重新安装它,以便它是全新安装。 我还在此过程中关闭了 Unity,以确保它通过 Play Services Resolver 安装干净。

我一直在旧项目上使用旧的 cocoapods 安装。 我不确定去年发生了什么变化,所以全新安装是最好的方法 - 只需通过终端升级本地 cocoapods 安装也可以,但我已经不知所措了 ;)。

我想我只是想出了问题所在。 我正在从项目文件构建 Unity 项目,而对于 cocoapods,您需要从工作区文件中在 xcode 中打开该项目,因为它包括统一项目和 cocoapods 项目。 在使用Unity之前,请不要从工作空间文件中构建任何内容。 我的错。 @flamepygmy

这对我有用。 谢谢!

打开并构建Unity-iPhone.xcworkspace而不是Unity-iPhone.xcodeproj

我仍然无法使用 Unity 2019.3 生成工作版本。
这些修复程序已经通过“拉取请求”发送,并且有一些发布的估计? Unity 2019.3于1月28日发布,大约需要6个月的时间,而Facebook SDK仍未与其兼容。

此页面是否有帮助?
0 / 5 - 0 等级