【问题标题】:Flutter Firestore doesn't retrieve any data in released android apkFlutter Firestore 未在已发布的 android apk 中检索任何数据
【发布时间】:2021-10-12 14:19:21
【问题描述】:

我尝试开发一个使用 firestore 和 firebase auth 进行身份验证的颤振应用程序。

在调试模式下,当我测试应用程序时,它会从 firestore 检索数据并显示它。和 firebase 身份验证也可以正常工作。

但在发布模式下,Firestore 不会检索任何数据并显示下面给出的错误。 但 Firebase 身份验证在发布模式应用程序中完美运行。

我使用 android studio 构建变体功能在发布模式下发现了错误。

感谢您的阅读。

E/io.grpc.internal.S1: [Channel<1>: (firestore.googleapis.com)] Uncaught exception in the SynchronizationContext. Panic!
    java.lang.ExceptionInInitializerError
        at m1.j.Q(Unknown Source:22)
        at io.grpc.internal.D.Q(Unknown Source:4)
        at io.grpc.internal.k1.A(:3)
        at io.grpc.internal.a1.run(:2)
        at k1.t1.a(Unknown Source:24)
        at k1.t1.execute(:2)
        at io.grpc.internal.K1.b(Unknown Source:9)
        at io.grpc.internal.u0.a(:10)
        at io.grpc.internal.u0.run(Unknown Source:38)
        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:919)
     Caused by: java.lang.RuntimeException: java.lang.NoSuchMethodException: o1.a.values []
        at java.lang.Enum.enumValues(Enum.java:270)
        at java.lang.Enum.access$000(Enum.java:61)
        at java.lang.Enum$1.create(Enum.java:277)
        at java.lang.Enum$1.create(Enum.java:275)
        at libcore.util.BasicLruCache.get(BasicLruCache.java:63)
        at java.lang.Enum.getSharedConstants(Enum.java:289)
        at java.lang.Class.getEnumConstantsShared(Class.java:2428)
        at java.util.EnumMap.getKeyUniverse(EnumMap.java:755)
        at java.util.EnumMap.<init>(EnumMap.java:138)
        at m1.v.<clinit>(:1)
        at m1.j.Q(Unknown Source:22) 
        at io.grpc.internal.D.Q(Unknown Source:4) 
        at io.grpc.internal.k1.A(:3) 
        at io.grpc.internal.a1.run(:2) 
        at k1.t1.a(Unknown Source:24) 
        at k1.t1.execute(:2) 
        at io.grpc.internal.K1.b(Unknown Source:9) 
        at io.grpc.internal.u0.a(:10) 
        at io.grpc.internal.u0.run(Unknown Source:38) 
        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:919) 
     Caused by: java.lang.NoSuchMethodException: o1.a.values []
        at java.lang.Class.getMethod(Class.java:2072)
        at java.lang.Class.getDeclaredMethod(Class.java:2050)
        at java.lang.Enum.enumValues(Enum.java:267)

W/Firestore: (23.0.1) [Z]: (3a36b20) Stream closed with status: o1{code=INTERNAL, description=Panic! This is a bug!, cause=java.lang.ExceptionInInitializerError
        at m1.j.Q(Unknown Source:22)
        at io.grpc.internal.D.Q(Unknown Source:4)
        at io.grpc.internal.k1.A(:3)
        at io.grpc.internal.a1.run(:2)
        at k1.t1.a(Unknown Source:24)
        at k1.t1.execute(:2)
        at io.grpc.internal.K1.b(Unknown Source:9)
        at io.grpc.internal.u0.a(:10)
        at io.grpc.internal.u0.run(Unknown Source:38) 

【问题讨论】:

    标签: android firebase flutter dart google-cloud-firestore


    【解决方案1】:

    这是 Firestore 的常见错误。问题在于android/app/build.gradle 中的minifyEnabledshrinkResources 字段。

    您应该能够通过更改 android/app/build.gradle 中的发布构建类型来解决此问题,如下所示:

    buildTypes {
    ...
        release {
            ...
            signingConfig signingConfigs.release
            minifyEnabled false
            shrinkResources false
        }
    }  
    

    当然,随着应用程序的大小变得越来越大,这不是一个理想的“解决方案”。但 Firebase 团队表示他们无能为力,因为我们使用了不受官方支持的颤振......

    以下是相关问题: https://github.com/FirebaseExtended/flutterfire/discussions/5708#discussioncomment-925997
    https://github.com/FirebaseExtended/flutterfire/issues/1412

    【讨论】:

      猜你喜欢
      • 2018-05-20
      • 1970-01-01
      • 2019-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-17
      • 2021-11-28
      • 1970-01-01
      相关资源
      最近更新 更多