Flutter app crashes when it use Firestore plugin in Release mode
Solution 1
Here is the solution of my nightmare.
EDIT:
Error
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)
To fix this error, update android.enableR8=false
in gradle.properties
. You need to add this row cause default value true.
Solution 2
I was facing the same problem, and the following changes to my build.gradle
solved it.
android {
compileSdkVersion 28
...
buildTypes {
release {
shrinkResources false
minifyEnabled false
signingConfig signingConfigs.release
}
}
}
Reference: https://github.com/FirebaseExtended/flutterfire/issues/1412#issuecomment-570161645
N.B. I know its not a perfect solution to disable minify. But it seems the firebase team is working on it and will be resolved in future update
Solution 3
I was able to keep android.enableR8=true by upgrading the gradle version.
android/build.gradle
from:
classpath 'com.android.tools.build:gradle:3.2.1'
to:
classpath 'com.android.tools.build:gradle:3.5.0'
android/gradle/wrapper/gradle-wrapper.properties
from:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip
to:
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
Furkan Sarihan
Updated on December 14, 2022Comments
-
Furkan Sarihan over 1 year
Everything works perfectly when in debug mode. It first happened when I update Flutter version to 1.10.x I could not remember which version did I use, properly. It should be 1.7.8, it was stable. To fix it I downgrade the flutter to 1.7.8+4 and also downgrade firebase related pub packages. But error still here.
Stack Trace for Related Error, captured from gogle play console
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)
When I saw the error trace on device (in android crash report dialog) It mentioned Firebase 19.0.0
Flutter Doctor:
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!
Error reporoducing scenario for final describe:
- Build app with
flutter run --release
- App try an basic firestore call
Firestore.instance.collection('collection-name').document('docuemnt-id').get()
- App crashes.
Also getting the same error with building with
flutter build appbudle
- Build app with