firebase Flutter应用程序在发布模式下使用Firestore插件时崩溃

6yoyoihd  于 2023-04-22  发布在  Flutter
关注(0)|答案(6)|浏览(192)

在调试模式下,一切都工作得很好。第一次发生在我将Flutter版本更新到1.10.x时,我不记得我使用的是哪个版本,正确的。它应该是1.7.8,它很稳定。为了解决这个问题,我将Flutter降级到1.7.8+4,并降级了与firebase相关的pub软件包。但错误仍然存在。
相关错误的堆栈跟踪,从gogle play控制台捕获

java.lang.RuntimeException: 
  at com.google.firebase.firestore.util.AsyncQueue.a (AsyncQueue.java:379)
  at com.google.firebase.firestore.util.AsyncQueue$$Lambda$5.run (AsyncQueue.java:2)
  at android.os.Handler.handleCallback (Handler.java:790)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loop (Looper.java:164)
  at android.app.ActivityThread.main (ActivityThread.java:7000)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:441)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1408)
Caused by: java.lang.AbstractMethodError: 
  at com.google.protobuf.GeneratedMessageLite.a (GeneratedMessageLite.java:1319)
  at com.google.firebase.firestore.proto.WriteBatch.s (WriteBatch.java:120)
  at com.google.firebase.firestore.proto.WriteBatch.a (WriteBatch.java:162)
  at com.google.firebase.firestore.proto.WriteBatch.a (WriteBatch.java:15)
  at com.google.firebase.firestore.proto.WriteBatch$Builder.a (WriteBatch.java:835)
  at com.google.firebase.firestore.local.LocalSerializer.a (LocalSerializer.java:172)
  at com.google.firebase.firestore.local.SQLiteMutationQueue.a (SQLiteMutationQueue.java:188)
  at com.google.firebase.firestore.local.LocalStore.a (LocalStore.java:237)
  at com.google.firebase.firestore.local.LocalStore$$Lambda$2.get (LocalStore.java:8)
  at com.google.firebase.firestore.local.SQLitePersistence.a (SQLitePersistence.java:195)
  at com.google.firebase.firestore.local.LocalStore.a (LocalStore.java:201)
  at com.google.firebase.firestore.core.SyncEngine.a (SyncEngine.java:227)
  at com.google.firebase.firestore.core.FirestoreClient.a (FirestoreClient.java:200)
  at com.google.firebase.firestore.core.FirestoreClient$$Lambda$11.run (FirestoreClient.java:6)
  at com.google.firebase.firestore.util.AsyncQueue.a (AsyncQueue.java:311)
  at com.google.firebase.firestore.util.AsyncQueue$$Lambda$4.call (AsyncQueue.java:2)
  at com.google.firebase.firestore.util.AsyncQueue.a (AsyncQueue.java:287)
  at com.google.firebase.firestore.util.AsyncQueue$$Lambda$3.run (AsyncQueue.java:4)
  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 com.google.firebase.firestore.util.AsyncQueue$DelayedStartFactory.run (AsyncQueue.java:205)
  at java.lang.Thread.run (Thread.java:764)

当我看到设备上的错误跟踪(在android崩溃报告对话框中)它提到了Firebase 19.0.0
Flutter医生:

Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel unknown, v1.7.8+hotfix.4, on Microsoft Windows [Version 10.0.17134.1069], locale en-US)

[√] Android toolchain - develop for Android devices (Android SDK version 29.0.0)
[√] Chrome - develop for the web
[√] Visual Studio - develop for Windows (Visual Studio Enterprise 2017 15.9.7)
[√] Android Studio (version 3.4)
[√] VS Code, 64-bit edition (version 1.38.1)
[√] Connected device (3 available)

• No issues found!

报告最终描述的方案时出错:

  • 使用flutter run --release构建应用程序
  • 应用程序尝试一个基本的firestore调用

Firestore.instance.collection('collection-name').document('docuemnt-id').get()

  • 应用程序崩溃。

使用flutter build appbudle构建时也会出现相同的错误

lxkprmvk

lxkprmvk1#

这是我的噩梦solution
编辑:
错误

FATAL EXCEPTION: main
Process: com.app.android, PID: 12668
java.lang.RuntimeException: Internal error in Firestore (19.0.0).
    at com.google.firebase.firestore.g.j.a(:379)
    at com.google.firebase.firestore.g.g.run(Unknown Source:2)
    at android.os.Handler.handleCallback(Handler.java:873)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6718)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

要修复此错误,请更新gradle.properties中的android.enableR8=false。您需要添加此行原因默认值true

zy1mlcev

zy1mlcev2#

我也遇到了同样的问题,下面对build.gradle的修改解决了这个问题。

android {
    compileSdkVersion 28

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

参考:https://github.com/FirebaseExtended/flutterfire/issues/1412#issuecomment-570161645
我知道这不是一个完美的解决方案,以禁用缩小。但似乎firebase团队正在努力,并将在未来的更新解决

qzlgjiam

qzlgjiam3#

我能够通过升级gradle版本来保持android.enableR8=true。

android/build.gradle

来自:

classpath 'com.android.tools.build:gradle:3.2.1'

致:

classpath 'com.android.tools.build:gradle:3.5.0'

android/gradle/wrapper/gradle-wrapper.properties

来自:

distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip

致:

distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
wr98u20j

wr98u20j4#

我有一个类似的情况(相同的错误),所以我会尽量告诉你发生了什么,也许是相同的问题,你有。
在我的情况下,我失去了密钥库,所以我通过所有的过程,要求一个新的密钥等,之后,我发布了一个新的版本和我的应用程序崩溃在你的确切方式,经过大量的谷歌和东西,我发现有一些与签名(因为在调试中可以工作,但在发布中不工作),所以我进入firebase控制台并再次下载google-services.json文件,令人惊讶的是...文件中有一个以前不存在的块。
在那之后,我用你在这里提供的命令在一个设备上进行测试(顺便说一句,谢谢!),woala!它工作了。
我还更新了SHA-1签名密钥在控制台,所以这可能会有所帮助。我希望我的回应帮助你出来一些解决方案。

0vvn1miw

0vvn1miw5#

https://github.com/flutter/flutter/issues/41576
在com.android.tools.buildbuild.gradle(project)中更改为版本3.4.2,即www.example.com:gradle:3.4.2,对我来说很有效。

t9eec4r0

t9eec4r06#

如果您不想禁用R8缩小,请将以下规则添加到proguard-rules.pro

-keep class com.google.firestore.** { *; }
-keep class io.grpc.** { *; }

相关问题