为什么Firestore在Android Studio上无法工作

21

我试图在我的安卓项目中实现Firestore。我已经按照Firebase官方网站上的所有步骤进行了操作,但我仍然遇到以下错误:

2020-11-03 19:38:47.569 8695-8760/com.example.alllerrr E/AndroidRuntime: FATAL EXCEPTION: grpc-okhttp-0
Process: com.example.alllerrr, PID: 8695
java.lang.AssertionError: Method getAlpnSelectedProtocol not supported for object SSL socket over Socket[address=firestore.googleapis.com/172.217.19.234,port=443,localPort=46122]
    at io.grpc.okhttp.internal.OptionalMethod.invoke(OptionalMethod.java:114)
    at io.grpc.okhttp.internal.OptionalMethod.invokeWithoutCheckedException(OptionalMethod.java:135)
    at io.grpc.okhttp.OkHttpProtocolNegotiator$AndroidNegotiator.getSelectedProtocol(OkHttpProtocolNegotiator.java:183)
    at io.grpc.okhttp.OkHttpProtocolNegotiator$AndroidNegotiator.negotiate(OkHttpProtocolNegotiator.java:145)
    at io.grpc.okhttp.OkHttpTlsUpgrader.upgrade(OkHttpTlsUpgrader.java:63)
    at io.grpc.okhttp.OkHttpClientTransport$4.run(OkHttpClientTransport.java:571)
    at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:923)

我已经实现了okhttp并且放置了

<uses-permission android:name="android.permission.INTERNET"/>

在清单文件中添加了代码,但是仍然无法运行:应用程序仍在崩溃。

这是我的代码:

val userID = auth.currentUser
                db.collection("users").document(userID.toString())
                val Map = hashMapOf<String, Any>()
                Map["pseudo"] = name.toString()
                db.collection("users")
                        .add(Map)
                        .addOnSuccessListener { documentReference ->
                            Toast.makeText(baseContext, "succes:" + userID,
                                    Toast.LENGTH_SHORT).show()
                        }
                        .addOnFailureListener { e ->
                            Toast.makeText(baseContext, "Veuillez essayer plus tard.",
                                    Toast.LENGTH_SHORT).show()
                        }
我尝试将字符串放入哈希映射变量中,而不是使用“Any”。如果有人有线索!

1
https://github.com/grpc/grpc-java/issues/2703 - Doug Stevenson
这不可能是因为我使用的手机版本或年龄,它是安卓11...我的谷歌播放服务已经更新到最新版本,所以我不明白为什么会出现这种情况... - Malopieds
正如Doug提供的链接所示,您应该使用动态安全提供程序 - Shawn Di Wu
3个回答

54

我在安卓11上也遇到了同样的问题,解决方法是将下面这行代码添加到我的build.gradle文件中:

implementation "io.grpc:grpc-okhttp:1.32.2"


3
谢谢,这个对我有用! 在android/app/build.gradle中插入。 - ALEXANDER LOZANO

11
在android/app/build.gradle文件中的dependencies部分添加以下答案:
dependencies {
    ....
    .....
    implementation "io.grpc:grpc-okhttp:1.32.2"
}

0

我尝试了Joseph Geoffery的解决方案

  • Open build.gradle file in your app folder
  • Add this in dependencies section
    implementation "io.grpc:grpc-okhttp:1.32.2"
    

这对我有用


这并没有回答问题。一旦您拥有足够的声望,您将能够评论任何帖子;相反,提供不需要询问者澄清的答案。- 来自审核 - Sweta Jain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接