Firestore:离线时交易崩溃
Firestore: Transactions crashing when offline
我知道根据更新日志 (0.12.9+5)。据推测,它修复了 android 上的崩溃,其中 Transaction
s 在离线时尝试会导致应用程序崩溃。然而,即使是 0.13.7(我正在使用的版本)。我仍然 运行 遇到应用程序崩溃问题。控制台中没有错误日志(立即崩溃)。
我试过:
- 运行 我的应用程序在物理设备上处于调试模式(相同行为)
- 附加错误句柄回调(未调用)
- 正在将我的
cloud_firestore
版本降至 0.12.11(支持 whereIn
查询的最低版本;这是我需要的,高于 0.12.9+5)
其他可能相关的信息:
- Logcat(我已经包含了我可以远程猜测相关的内容;我不知道如何阅读 logcat)
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask.done(AsyncTask.java:354)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
at java.util.concurrent.FutureTask.run(FutureTask.java:271)
at android.os.AsyncTask$SerialExecutor.run(AsyncTask.java:245)
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:764)
Caused by: java.lang.AssertionError: INTERNAL ASSERTION FAILED: A transaction object cannot be used after its update callback has been invoked.
at com.google.firebase.firestore.util.Assert.fail(com.google.firebase:firebase-firestore@@21.3.0:46)
at com.google.firebase.firestore.util.Assert.hardAssert(com.google.firebase:firebase-firestore@@21.3.0:31)
at com.google.firebase.firestore.core.Transaction.ensureCommitNotCalled(com.google.firebase:firebase-firestore@@21.3.0:246)
at com.google.firebase.firestore.core.Transaction.lookup(com.google.firebase:firebase-firestore@@21.3.0:81)
at com.google.firebase.firestore.Transaction.getAsync(com.google.firebase:firebase-firestore@@21.3.0:191)
at com.google.firebase.firestore.Transaction.get(com.google.firebase:firebase-firestore@@21.3.0:228)
at io.flutter.plugins.firebase.cloudfirestore.CloudFirestorePlugin.doInBackground(CloudFirestorePlugin.java:569)
at io.flutter.plugins.firebase.cloudfirestore.CloudFirestorePlugin.doInBackground(CloudFirestorePlugin.java:564)
at android.os.AsyncTask.call(AsyncTask.java:333)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor.run(AsyncTask.java:245)
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:764)
2020-06-20 15:20:03.272 10188-10241/com.vnf.lightweight_pos E/CloudFirestorePlugin: java.lang.Exception: DoTransaction failed: UNAVAILABLE: Unable to resolve host firestore.googleapis.com
Caused by: java.lang.AssertionError: INTERNAL ASSERTION FAILED: A transaction object cannot be used after its update callback has been invoked.
Channel is unrecoverably broken and will be disposed!
firebase_auth
: 0.16.1
我发现 GitHub issue 描述了与您完全相同的问题。此问题有待修复。
同时,根据 this comment 最好的方法似乎是降级到版本 0.12.10+2。
我知道根据更新日志 (0.12.9+5)。据推测,它修复了 android 上的崩溃,其中 Transaction
s 在离线时尝试会导致应用程序崩溃。然而,即使是 0.13.7(我正在使用的版本)。我仍然 运行 遇到应用程序崩溃问题。控制台中没有错误日志(立即崩溃)。
我试过:
- 运行 我的应用程序在物理设备上处于调试模式(相同行为)
- 附加错误句柄回调(未调用)
- 正在将我的
cloud_firestore
版本降至 0.12.11(支持whereIn
查询的最低版本;这是我需要的,高于 0.12.9+5)
其他可能相关的信息:
- Logcat(我已经包含了我可以远程猜测相关的内容;我不知道如何阅读 logcat)
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask.done(AsyncTask.java:354)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
at java.util.concurrent.FutureTask.run(FutureTask.java:271)
at android.os.AsyncTask$SerialExecutor.run(AsyncTask.java:245)
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:764)
Caused by: java.lang.AssertionError: INTERNAL ASSERTION FAILED: A transaction object cannot be used after its update callback has been invoked.
at com.google.firebase.firestore.util.Assert.fail(com.google.firebase:firebase-firestore@@21.3.0:46)
at com.google.firebase.firestore.util.Assert.hardAssert(com.google.firebase:firebase-firestore@@21.3.0:31)
at com.google.firebase.firestore.core.Transaction.ensureCommitNotCalled(com.google.firebase:firebase-firestore@@21.3.0:246)
at com.google.firebase.firestore.core.Transaction.lookup(com.google.firebase:firebase-firestore@@21.3.0:81)
at com.google.firebase.firestore.Transaction.getAsync(com.google.firebase:firebase-firestore@@21.3.0:191)
at com.google.firebase.firestore.Transaction.get(com.google.firebase:firebase-firestore@@21.3.0:228)
at io.flutter.plugins.firebase.cloudfirestore.CloudFirestorePlugin.doInBackground(CloudFirestorePlugin.java:569)
at io.flutter.plugins.firebase.cloudfirestore.CloudFirestorePlugin.doInBackground(CloudFirestorePlugin.java:564)
at android.os.AsyncTask.call(AsyncTask.java:333)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor.run(AsyncTask.java:245)
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:764)
2020-06-20 15:20:03.272 10188-10241/com.vnf.lightweight_pos E/CloudFirestorePlugin: java.lang.Exception: DoTransaction failed: UNAVAILABLE: Unable to resolve host firestore.googleapis.com
Caused by: java.lang.AssertionError: INTERNAL ASSERTION FAILED: A transaction object cannot be used after its update callback has been invoked.
Channel is unrecoverably broken and will be disposed!
firebase_auth
: 0.16.1
我发现 GitHub issue 描述了与您完全相同的问题。此问题有待修复。
同时,根据 this comment 最好的方法似乎是降级到版本 0.12.10+2。