首页 > 解决方案 > Unity 和 Firebase - 包管理器解析器,卸载以下包:Firebase 身份验证

问题描述

我正在使用 Unity 2019.3.4f1 和 Firebase 包 6.15.2,当我导入自定义包时,包管理器解析器要求更改“/manifest.json”。

当我单击“添加选定的注册表”时,Unity 开始卸载软件包并显示以下消息:“卸载以下软件包:Firebase 身份验证”

包管理器解析器

如果没有出现此消息,我将无法部署或玩游戏。

标签: firebaseunity3dfirebase-realtime-database

解决方案


您遇到的是较新版本的 Unity 支持包管理器,可以更轻松地安装和管理依赖项。较新版本的 Firebase SDK 可以选择利用这一点。

我不能完全说出您的具体问题是什么,但是有几条前进的道路。

最简单的方法是单击“禁用注册表版”。如果您根本不想弄乱这个系统,只需单击此按钮并按照您的预期使用 Unity 包。

否则,您可以单击“添加选定的注册表”。这将启动一个有点复杂的过程,其中:

  1. Firebase 插件向 Unity 添加了一个“Scoped Registry”(这是您在“After”窗格中看到的代码)。这告诉 Unity Google 的包存储库。
  2. 然后,插件会查找注册表中包含的任何包并将其卸载以避免将其包含两次。
  3. 插件将它卸载的包添加到你的包清单中。这使您可以使用“包管理器”窗口直接在 Unity 中维护和更新 Firebase 插件: Unity 包管理器的图片显示了可用的 Google 包。 Firebase 实时数据库被标记为需要更新

您想要这样做的原因有很多。首先,Firebase Unity SDK磁盘上非常大——甚至比您项目中的 SDK 还要大。原因是它为旧版 .NET3 项目和现代 .NET4 项目提供了每个 Firebase 库的冗余副本。eachunitypackage还必须包含它的所有依赖项——这意味着FirebaseCore每个unitypackage.

其次,最让我感动的是,Firebase 插件太大,无法在没有 Git LFS 的情况下放入 GitHub 存储库。这是因为支持 Linux 所需的一个或多个库比单个源文件大。当您使用包管理器时,这些东西会被保留在您的源存储库之外(如果您不提交Library/目录,那么您不应该提交),从而降低您在云中的大小并使这种解决方法变得不必要。

第三,如我上面包含的屏幕截图所示,当您使用包管理器时,根据需要升级和降级 Firebase SDK 会更容易。您不再需要记住您安装了哪些 Firebase 库,您可以在一个简洁的列表中看到它们!您还可以轻松卸载不需要的 Firebase 功能,而不必过多担心周围存在大量依赖项(您仍然必须手动清理一些本机插件)。

您也可以手动执行所有这些操作!您可以手动执行此处概述的步骤,而不是下载 Unity SDK 。即您可以添加:

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

Packages/manifest.json到该弹出窗口中所示的末尾。然后以这种方式安装和管理 Firebase 插件,完全不用担心迁移。

编辑:我还应该提到,如果您确实认为自己遇到了错误,那么负责您看到的对话框的系统被称为“ Unity 的外部依赖管理器”。您可以直接在其 GitHub 页面上提交问题


推荐阅读