【问题标题】:java.lang.RuntimeException: Internal error in Firestore (0.6.6-dev)java.lang.RuntimeException:Firestore 中的内部错误(0.6.6-dev)
【发布时间】:2018-11-17 06:11:12
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: android firebase android-studio google-cloud-firestore


    【解决方案1】:

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

    【讨论】:

    • 文档或官方来源?
    【解决方案2】:

    您是说创建签名 apk 后会发生这种情况吗?

    然后尝试在 firebase 控制台中添加已签名应用的 SHA1 或 SHA256

    如果您使用对象来获取数据并使用 minifyEnabled 在 gradle 中为 true

    然后更改您的 proguard 文件

    【讨论】:

      【解决方案3】:

      注意我正在使用 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);
      }
      

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

      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...
          }
      }
      

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

      【讨论】:

        【解决方案4】:

        自从我将 firestore 依赖项更新为 v16 后,我遇到了同样的问题。 它只发生在我的 release 版本中,特别是必须将 debuggable 设置为 false

        我可以确认所选的解决方案(将以下内容添加到 proguard 配置中)确实解决了崩溃问题。

        -keep class io.grpc.** {*;}
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-02-07
          • 2018-03-22
          • 1970-01-01
          • 2012-09-30
          • 1970-01-01
          • 2021-07-16
          相关资源
          最近更新 更多