【问题标题】:Unity and Firebase Database 7.0.2 : Fallback handler could not load libraryUnity 和 Firebase 数据库 7.0.2:后备处理程序无法加载库
【发布时间】:2021-01-12 11:44:52
【问题描述】:

我刚刚在我的项目中集成了 Firebase 身份验证,效果很好。数据库是在 Firebase 门户上创建的。

集成 Firebase 数据库后(由于某种不明原因,Unity 包管理器中没有显示),在启动时调用 database = FirebaseDatabase.DefaultInstance; 时,编辑器冻结。

我检查了以我在下面复制粘贴的内容结尾的编辑器日志。我在这里看到了一些关于它是 firebase 6.10 的问题的帖子,但我在这里使用的是 7.0.2。想知道大家有什么想法吗?

编辑日志:

后备处理程序无法加载库 /Applications/Unity/Hub/Editor/2019.4.11f1/Unity.app/Contents/Frameworks/Mono/lib/libAssets/Firebase/Plugins/x86_64/FirebaseCppApp-7_0_2.bundle 后备处理程序可以未加载库/Applications/Unity/Hub/Editor/2019.4.11f1/Unity.app/Contents/Frameworks/Mono/lib/libAssets/Firebase/Plugins/x86_64/FirebaseCppApp-7_0_2.bundle.dylib 后备处理程序无法加载库/ Applications/Unity/Hub/Editor/2019.4.11f1/Unity.app/Contents/Frameworks/Mono/lib/libAssets/Firebase/Plugins/x86_64/FirebaseCppApp-7_0_2.bundle.so 后备处理程序无法加载库/Applications/Unity/ Hub/Editor/2019.4.11f1/Unity.app/Contents/Frameworks/Mono/lib/libAssets/Firebase/Plugins/x86_64/FirebaseCppApp-7_0_2.bundle 加载场景'Temp/__Backupscenes/0.backup'

编辑#1:首先感谢两位长篇大论的回答。我将尝试重新导入项目中的捆绑文件并向您报告。我应该注意,编辑器日志中列出的路径实际上并不存在于我的 Unity.app 包内容中。它找到了内容和框架,但是 Mono 不存在......在将 CakeCommander 的注册表添加到我的 Packages/Manifest.json 之后,我终于设法拥有包管理器的 Google LLC 部分并从那里重新导入实时数据库和 Auth,所以这很好。我还应该注意,现在所有 SDK 的文件夹都存在于 Packages 文件夹中,而 Assets 中没有任何东西了。我暂时没有使用任何版本控制。

【问题讨论】:

  • 这是整个编辑器日志?
  • 添加了额外的屏幕截图

标签: firebase unity3d firebase-realtime-database


【解决方案1】:

您可能需要将 Google 游戏包注册表添加到 Unity 项目的 Packages/Manifest.json 文件中。

这应该看起来像:

{
  "scopedRegistries": [
    {
      "name": "Game Package Registry by Google",
      "url": "https://unityregistry-pa.googleapis.com",
      "scopes": [
        "com.google"
      ]
    }
  ],
  "dependencies": {
    ...
  }
}

您需要重新启动 Unity,它才能识别此更改。

我建议通过包管理器重新导入,以防可能出现配置错误。

【讨论】:

    【解决方案2】:

    我首先要说的是,这似乎是编辑器独有的问题,因为您已将其发布(如果它发生在您的设备上,我不会感到惊讶)。为了分解这个特定的日志,Firebase Unity SDK 由三个部分组成:

    1. 一个 C# Unity 库,您可以从典型的 Unity 代码中使用它
    2. 面向游戏开发者的跨平台 C++ 层
    3. 一个原生 iOS/Android 层,用于挂钩到每个操作系统 - 或 - 用于 Windows、Linux 和 MacOS 的这些原生层的 C++ 实现。

    看起来缺少第 3 层,至少在桌面上是这样。缺少的文件是 .bundle 文件,它们基本上是 macOS 的共享库。所以可能会发生以下三种情况之一:

    1. MacOS Catalina(和更新版本)对可以运行和不能运行的内容有非常严格的保护。您可能需要明确允许 MacOS 的 .bundle 文件,以便 Unity 编辑器与 Firebase 库连接。我已经记录了video about this,但一般要点是您需要重新安装 Firebase 插件,运行 Unity(您应该会看到一个安全弹出窗口),在不删除任何内容的情况下关闭弹出窗口,然后允许 Firebase 在您的计算机的安全性中设置。

    2. 您已从项目中排除 .bundle 文件。在导入 SDK 或将项目添加到源代码管理时(有时这些被排除为“构建工件”)。为了在您的 Mac 上的编辑器中测试 Firebase,您需要包含此 .bundle 文件。这可能就像重新导入 FirebaseDatabase.unitypackage 并确保包含 FirebaseCppDatabase.bundle 和相关的 .bundle 文件一样简单:

    请注意,如果您确实从源代码管理中克隆了您的项目,您将需要找到您的排除规则并确保提交捆绑文件。

    1. 相关的.bundle 文件可能未与编辑器构建目标关联。这通常发生在人们调整构建系统时(例如:尝试使用.asmdef 文件)或者对在他们的提交中包含.meta 文件感到害羞。如果您想使用 Unity 为您的游戏创建 macOS 原生版本,您需要确保 .bundle 文件包含在“编辑器”版本中以在编辑器和“独立”版本中运行:

    请注意,@CakeCommander 的建议也可以解决您的问题。 PackageManager 将 Firebase SDK 安装在您的 Assets/ 目录旁边而不是内部,Unity 将知道如何在需要时在每台机器上获取它。任何开发人员或版本控制软件都不太可能破坏安装。我会注意到 Unity 的外部依赖管理器用于自动将包迁移到包管理器,但现在不再 - 所以我可能会等待重新实现该功能,然后再直接弄乱包注册表,但这也可能是您最简单的路径前进。

    【讨论】:

    • 非常感谢 Patrick,现在将尝试检查 Catalina 的行为。与此同时,我在上面添加了一些关于今天发生的事情的注释。
    • 嗨,帕特里克,不确定您是否在上面看到了我的答案的编辑。我已经尝试通过包管理器多次删除和重新导入。我不再从 OSX 弹出权限,它安装得很好。但是 .bundle 文件现在位于以下路径中: PROJECTNAME > Library > PackageCache > com.google.firebase.app@7.0.2 > Firebae > Plugins ? x86_64 >。我仍然得到相同的结果,编辑永远挂在播放中
    • 所以你的状态是@CakeCommander 正在努力让你达到的状态(同样,我不一定推荐使用 UPM,但它确实让 Unity 管理插件更容易)。您可能想尝试关闭 Unity 并删除 Temp/Library/ 目录(这应该是非破坏性的,但由于您不使用版本控制,您可能需要制作项目的备份副本以防万一) .否则,这开始看起来像一个错误,所以我建议您联系github.com/firebase/quickstart-unity/issues
    • 确保 .bundle 文件存在于正确的位置也是值得的,但路径(在 Unity.app 中)看起来确实可疑。我记得一些关于包的路径是如何有点时髦的东西,所以它可能是一个日志/统一架构问题,但是在 github 页面上的人们会知道。
    猜你喜欢
    • 1970-01-01
    • 2011-05-31
    • 2016-09-22
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 2018-01-27
    • 1970-01-01
    • 2012-03-03
    相关资源
    最近更新 更多