Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Firebase实时数据库出现Unity错误_C#_Android_Firebase_Unity3d_Firebase Realtime Database - Fatal编程技术网

C# Firebase实时数据库出现Unity错误

C# Firebase实时数据库出现Unity错误,c#,android,firebase,unity3d,firebase-realtime-database,C#,Android,Firebase,Unity3d,Firebase Realtime Database,我已经使用Unity一年了,我决定制作一个简单的聊天应用程序。我决定使用谷歌的Firebase来存储我的用户和聊天数据。我计划在android(未来的iOS)上安装该应用程序。我的问题是Unity无法生成Firebase Android文件。我查了一下错误,然后找到了。我采用了推荐的解决方案,创建了实时数据库,并重新安装了json和plist文件。它不起作用。我仍然得到以下错误 从/Users/Family/Desktop生成Firebase Android资源文件google-services

我已经使用Unity一年了,我决定制作一个简单的聊天应用程序。我决定使用谷歌的Firebase来存储我的用户和聊天数据。我计划在android(未来的iOS)上安装该应用程序。我的问题是Unity无法生成Firebase Android文件。我查了一下错误,然后找到了。我采用了推荐的解决方案,创建了实时数据库,并重新安装了json和plist文件。它不起作用。我仍然得到以下错误

从/Users/Family/Desktop生成Firebase Android资源文件google-services.xml/கலைமாறன்/Unity/STEMastery/Assets/。/Assets/Firebase Data/google-services.json失败。 如果您的应用程序中未包含有效的Firebase Android资源,则将无法初始化

我还检查了外部工具。在android下,它说JDK安装了Unity,android SDK工具安装了Unity,android NDK安装了Unity,Gradle安装了Unity。我还没有加载android studio,所以我可以构建到android

我也尝试重新启动unity、visual studio甚至我的计算机,但没有任何帮助

Unity在我的iMac上运行得非常好,可以在Unity编辑器中访问我的实时数据库。但当我在手机上运行时,会弹出两个错误

  • DllNotFound异常:Firebase CppApp
  • 它找不到默认引用
  • 2.秘书长的解释: 我有这行代码

    DatabaseReference reference = FirebaseDatabase.DefaultInstance.RootReference;
    
    然后我签入另一个脚本,如果它为null。它在我的手机上变为空,但在我的mac电脑上工作正常

    我正在使用macOS Mojave(版本10.14.4)。
    我的unity版本是unity 2020.3.4f1。
    我的手机使用安卓10

    我想尽一切办法来处理这个错误。我相信通过修复此错误,我的应用程序将在我的手机上正常工作。我已尽力提供所有必要的信息,以帮助您了解我的问题。如果我仍然缺少任何,请询问,我会尽快回复

    编辑:
    我尝试了一些新东西。我升级到unity 2020.7,但这不起作用。我还尝试使用Unity 2019从头开始创建一个新项目,但我仍然遇到同样的错误。可能是Firebase在我的mac上不起作用,还是Unity中的一个bug已经存在了好几个版本?我真的需要一些帮助来整合Firebase。非常感谢您的帮助。

    对于使用非ascii用户名的开发人员来说,这是一个众所周知的问题。见和。也许值得打开一期新版本,并强调它现在正在阻止活动开发(请注意,对于未来的读者,第一期已关闭,但第二期在我编写时已打开。如果
    690
    也已关闭,并且有一个相关的里程碑,这意味着该问题已被修复)

    对于潜在的解决方法,最著名的解决方法是使用不带任何扩展非ascii字符的用户名。我知道这可能会产生问题或造成破坏

    在进行任何数据库调用之前,可以尝试在编辑器中禁用持久性。这可能会阻止Firebase尝试读取本地数据文件夹,从而避免以下问题:

    var database = FirebaseDatabase.DefaultInstance;
    if (Application.isEditor) {
        database.SetPersistenceEnabled(false);
    }
    var reference = database.RootReference;
    

    您只需在游戏中执行一次(因此可能在
    checkandfixedependenciesasync
    之后立即执行),但将其放在数据库访问之前应该会使我的示例代码更安全。

    您好,感谢您的回复。我以为过几天这个问题就会被忘记。我看看能不能试试。但我有一个问题。什么是非ascii用户名?什么是ascii用户名?我会尽可能地循环StackOverflow,但在GitHub上询问问题是确保问题至少得到解决的一个好方法(你只需在两周内回答任何问题就可以解决问题)。对于ascii,我指的是非扩展ascii字符集(),基本上是拉丁字符(可能是最安全的,没有重音)。由于桌面实现几乎都是C++,这样的问题会出现,其中元素没有转换为UTF-8作为后退。(如果你不熟悉的话,UTF-8是一种非常适合使用8位字符的语言的后备方案。除了strlen是字符串所占用的字节,而不是字符外,它在某种程度上是向后兼容的,不会破坏代码,但可能看起来很奇怪)
    var database = FirebaseDatabase.DefaultInstance;
    if (Application.isEditor) {
        database.SetPersistenceEnabled(false);
    }
    var reference = database.RootReference;