繁体   English   中英

如何在我的 Unity 项目中翻译 google-services.json 以便我的 firebase 集成在 buidl 中工作?

[英]How can I translate the google-services.json in my Unity project so that my firebase integration works in an buidl?

我正在尝试在我的 Oculus Quest 应用程序中使用 FireBase 实时数据库,但似乎 google-services 在我构建时没有正确初始化。

在我的 Unity 编辑器中一切正常,我没有收到任何错误。 当我构建 quest 并使用 ADB Logcat 时,我收到此错误:

NullReferenceException: Object reference not set to an instance of an object at QuestionnaireManager.GiveAnswer (System.Int32 answer) [0x00035] in <7ee908d4e96e4aa6a0d12545247f5f0d>:0 at UnityEngine.Events.InvokableCall 1[T1].Invoke (T1 args0) [0x00010] in <7717a69884ed4b33971896d8ee45333e>:0 at UnityEngine.Events.CachedInvokableCall 1[T].Invoke (System.Object[] args) [0x00001] 在 <7717a69884ed4b33971896d8ee45333e>:0 在 UnityEngine.Events.UnityEvent.Invoke [0x00001] 7717a69884ed4b33971896d8ee45333e>:0 在 PhysicsButton.OnCollisionExit (UnityEngine.Collision other) [0x0002c] in <7ee908d4e96e4aa6a0d12545247f5f0d>:0

这篇博文让我认为 XML 文件没有正确初始化,但我无法按照他们列出的步骤进行操作,因为我使用的是 Unity 并且对 android-native、gradle 或 Z8ED1A771BC236BDDDC287 命令了解不多.

任何帮助是极大的赞赏!

我在该代码片段中没有看到任何与 Firebase 相关的特定日志,但无论哪种方式,Oculus Quest 都将是一个有趣的平台。

将 Firebase 与 Unity 项目集成时,您应该做的第一件事是调用CheckAndFixDependenciesAsync 这样做是检查用户是否在 Android 上拥有最新版本的Google Play 服务 在 iOS 和桌面上,这个调用什么都不做。

Google Play 服务也仅作为许可服务提供(据我所知),它不是 Android 开源项目的一部分。 因此,主流的 Android 手机和平板电脑往往可以访问它,但分叉 Android 的设备(例如 Fire TV)则不能。 据我所知,Oculus Quest 运行的是 Android 的分叉版本,没有 Google Play 服务。 如果这个假设是准确的,那么CheckAndFixDependenciesAsync将永远不会返回DependencyStatus.Available

现在您的具体问题是关于实时数据库,它实际上不需要 Google Play 服务(一个好的经验法则是,如果它是开源的,它不需要 Play 服务。但这不一定是保证)。 但是,如果您使用 Firebase 身份验证,您可能会这样做以有效地使用实时数据库规则,那么将需要播放服务并且绝对不能在 Android 上按原样运行。 尽管这可能存在于本机库级别,但请记住,如果您的设备不支持 Play Services, CheckAndFixDependenciesAsync将失败。 在这种情况下,我不知道FirebaseApp.DefaultInstance是否可以是非null ,因此我不知道Database.DefaultInstance是否可以是非null (事实上,这个错误似乎不是好兆头) .

在这一点上,你有什么选择呢?

如果您只是为自己开发应用程序,也许您可以侧载 Play Services。 我通常会建议不要这样做,因为您要从可能声名狼藉的来源中提取核心功能。 如果你这样做,一切可能都会奏效(在你这样做之前在手机上测试以防万一)。

您可以纯粹使用 REST API。 我已经看到这个插件出现了一点,但是你会错过 Firebase Games 团队为真正利用 Android 的本机功能所做的一些工作(其中一个副作用是整个 Play Store 依赖毕竟)。

您可以通过Cloud Function (或Cloud Run ,如果您想留在 C# 世界)公开您的整个后端。 如果您使用普通(与可调用)函数,这些是简单的 rest 调用。

您也可以使用Unity 的 JNI 互操作来尝试直接使用本机 Android SDK。 这可能有点痛苦(JNI 从来都不是有趣的,即使有助手),但你甚至可以使用 这个项目来解决身份验证问题!

哦,最重要的是,提交功能请求 即使错误已被锁定,获得更多关于需要什么以及为什么需要的输入也很有用。 因此,请包括您想要定位的设备、原因、您需要 Firebase 做什么,以及您愿意分享的有关您的游戏的任何其他信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM