我正试图添加一个'登录与谷歌'选项到我的应用程序,使用firebase。然而,当我点击按钮,调用我的android设备上的登录脚本,应用程序崩溃,并完全关闭。
我无法在编辑器中运行此脚本。那么有没有别的方法来找出错误呢
我使用的脚本在这里找到https://www.dropbox.com/s/qss2wk4v52d48j4/GoogleSignInDemo.cs?dl=0,并从我的firebase项目中获取了web客户端id,并启用了google登录。
我还将sha1指纹添加到我的firebase项目中,并将google-services.json文件复制到我的unity项目中。我使用的是Unity 2020.1.6f1我的firebase软件包版本为7.0.1,谷歌登录插件为1.0.4
将感谢所有帮助解决这个问题,并获得登录与谷歌选项工作.
我发现我的代码在这里中断:
GoogleSignIn.DefaultInstance.SignIn().ContinueWith(OnAuthenticationFinished);
这是OnAuthenticationFinished方法:
internal void OnAuthenticationFinished(Task<GoogleSignInUser> task){}
我将其留空以确保问题不在方法内部
7条答案
按热度按时间dz6r00yl1#
我是C#和Unity的初学者。我相信OnAuthenticationFinished在后台线程中运行(与Unity主线程的区别)。如果在OnAuthenticationFinished()中更新UI或打印日志,则会导致崩溃。
我通过将OnAuthenticationFinished()中的值保存到变量来解决这个问题。并在Update()中使用它们
或者你可以像Digvijaysinh Gohil一样使用Corrountine()。
yrdbyhpb2#
我想我看到你的问题了。
OnAuthenticationFinished
很可能在后台触发,而AddToInformation
正在改变UnityEngine
中的某些东西(即更新infoText.text
)。如果将
ContinueWith
替换为ContinueWithOnMainThread
,它可能会正常工作。我建议您现在对代码中的所有ContinueWith
示例都这样做。它可能效率稍低(你在游戏线程上工作),但在Unity中也更安全。否则,我需要查看日志来找出问题所在。请参阅this blog post了解更多信息。rqmkfv5c3#
我也面临着同样的问题,
ContinueWithOnMain
也不适合我,所以我基本上定义了协程,让它们在执行其他指令之前等待帧的结束。下面是我做的代码
协程如下
rt4zxlrg4#
在我的情况下,这是一个r8/proguard的问题。我已经将这些行添加到proguard规则中,它停止了崩溃:
3zwtqj6y5#
你好,我使用相同的脚本,有同样的问题。这个问题背后的原因是“
AddToInformation()
“是变异的东西在团结引擎作为帕特里克说。最简单的解决方案是从脚本中注解/删除“
AddToInformation()
“函数。它只是为了调试的目的,不会影响功能。ncecgwcz6#
我有一个问题与建成APK崩溃在年底.这个问题是与依赖和我解决了它改变设置资产>外部依赖管理器> android >设置。关闭自动分辨率。然后删除.aar文件。然后我解决了依赖关系。这解决了我的问题,我希望这有帮助。欲了解更多信息
Firebase for Unity sample app crashes with: Could not find class 'com.google.android.gms.common.api.PendingResult'
8zzbczxx7#
对我来说,我必须在登录前的一行代码中使用
FirebaseAuth.DefaultInstance
,否则,它每次都会崩溃。