java.lang.RuntimeException:Firestore 中的内部错误 (0.6.6-dev)

ank*_*hut 7 android firebase android-studio google-cloud-firestore

我在我的应用程序中使用 FireStore。\n它们的版本是 \nimplementation 'com.google.firebase:firebase-firestore:17.0.1'

\n\n

我正在使用Firestore和的数据库offline feature of firestore来获取数据。

\n\n

这工作正常,但是当我签署应用程序时,我遇到了错误。

\n\n
   E/AndroidRuntime: FATAL EXCEPTION: main\n   Process: com.firestoretest.videostatus, PID: 13763\n   java.lang.RuntimeException: Internal error in Firestore (0.6.6-dev).\n       at bov.b(Unknown Source:19)\n       at box.run(Unknown Source:2)\n       at android.os.Handler.handleCallback(Handler.java:789)\n       at android.os.Handler.dispatchMessage(Handler.java:98)\n       at android.os.Looper.loop(Looper.java:172)\n       at android.app.ActivityThread.main(ActivityThread.java:6637)\n       at java.lang.reflect.Method.invoke(Native Method)\n       at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)\n       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)\n    Caused by: java.lang.ExceptionInInitializerError\n       at cbh.<clinit>(Unknown Source:20)\n       at ced.b(Unknown Source:0)\n       at cee.b(Unknown Source:0)\n       at cee.a(Unknown Source:0)\n       at car.a(Unknown Source:4)\n       at bod.<init>(Unknown Source:22)\n       at bjo.a(Unknown Source:87)\n       at bjq.run(Unknown Source:8)\n       at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:457)\n       at java.util.concurrent.FutureTask.run(FutureTask.java:266)\n       at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)\n       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)\n       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)\n       at bov$a.run(Unknown Source:15)\n       at java.lang.Thread.run(Thread.java:764)\n    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Package.getImplementationVersion()' on a null object reference\n       at cco.b(Unknown Source:6)\n       at cco.<clinit>(Unknown Source:137)\n       at cbh.<clinit>(Unknown Source:20)\xc2\xa0\n       at ced.b(Unknown Source:0)\xc2\xa0\n       at cee.b(Unknown Source:0)\xc2\xa0\n       at cee.a(Unknown Source:0)\xc2\xa0\n       at car.a(Unknown Source:4)\xc2\xa0\n       at bod.<init>(Unknown Source:22)\xc2\xa0\n       at bjo.a(Unknown Source:87)\xc2\xa0\n       at bjq.run(Unknown Source:8)\xc2\xa0\n       at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:457)\xc2\xa0\n       at java.util.concurrent.FutureTask.run(FutureTask.java:266)\xc2\xa0\n       at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)\xc2\xa0\n       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)\xc2\xa0\n       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)\xc2\xa0\n       at bov$a.run(Unknown Source:15)\xc2\xa0\n       at java.lang.Thread.run(Thread.java:764)\n
Run Code Online (Sandbox Code Playgroud)\n\n

请任何人对此错误有任何想法,然后请通知我。\n提前致谢。

\n

小智 6

尝试添加-keep class io.grpc.** {*;}到您的 proguard 配置中。它应该有效。自从我添加它以来,还没有发生过任何崩溃。将进一步测试。

  • 这方面的文档或官方来源? (2认同)

Sil*_*der 5

注意我正在使用 Flutter,所以这应该适用于 Java/Kotlin Android 和 Flutter

花了几个小时后,我修复了它

1

检查路径 yourproject/Android/app 中是否存在 proguard-android.txt 或 proguard-rules.pro

2

如果它们存在,请复制下面的配置,如果不存在,请为它们创建单独的文件,包括我提到的路径中的相同名称(proguard-android.txt 和 proguard-rules.pro)

3(配置线)

   -keep class io.grpc.** {*;}
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}
Run Code Online (Sandbox Code Playgroud)

将上面的代码粘贴到两个文件中。

4(通过添加此行让您的 myproject/Android/app/build.gradle 看到它们)

 buildTypes {
    release {
        // TODO: Add your own signing config for the release build.
        // Signing with the debug keys for now, so `flutter run --release` works.
        signingConfig signingConfigs.release //If in debug, change release to debug

        minifyEnabled true
        useProguard true
        shrinkResources true

        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' //I add this line...
    }
}
Run Code Online (Sandbox Code Playgroud)

清理您的项目并运行或生成您的 APK。