我不明白这个bug,之前我的应用程序运行得很好,但是现在我使用的是颤振2.0,还有几个用户已经崩溃了。经过几天的应用程序。这似乎与防火墙有关,但我要求在没有互联网连接的情况下测试这个应用程序,但用户总是会崩溃。
另一种可能是在发送数据之前总是调用代码的这一部分。
input=prefs.getKeys().map<String>((key) {
return key + ":" + prefs.get(key).toString();
}).toList();
此代码从sharedpref调用所有键/值,之后我将用户的所有数据发送到firebase。也许这不是个问题。但是事实是,用户崩溃甚至连连接都不在我电话里,用getkey读取大量数据会产生崩溃.但我不明白为什么会在日志上提到它。我没有登录crashanalitycs来指出崩溃的位置,只有这个日志。
Fatal Exception: java.lang.RuntimeException: Internal error in Cloud Firestore (24.2.1).
at com.google.firebase.firestore.util.AsyncQueue.lambda$panic$3(AsyncQueue.java:19)
at com.google.firebase.firestore.util.-$$Lambda$AsyncQueue$jx84dqgUsF4ojecSMurRqFLFD1Y.run(-.java:2)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8663)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
Caused by java.lang.RuntimeException: java.lang.NullPointerException: Attempt to get length of null array
at com.google.firebase.firestore.util.AsyncQueue$SynchronizedShutdownAwareExecutor.lambda$executeAndReportResult$1(AsyncQueue.java:14)
at com.google.firebase.firestore.util.-$$Lambda$AsyncQueue$SynchronizedShutdownAwareExecutor$pKSAgg-ozJ8RbUveSl-44aUfFQw.run(-.java:4)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:463)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:307)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at com.google.firebase.firestore.util.AsyncQueue$SynchronizedShutdownAwareExecutor$DelayedStartFactory.run(AsyncQueue.java:15)
at java.lang.Thread.run(Thread.java:1012)
Caused by java.lang.NullPointerException: Attempt to get length of null array
at com.google.protobuf.GeneratedMessageLite.parseFrom(GeneratedMessageLite.java)
at com.google.firestore.v1.Write.parseFrom(Write.java:2)
at com.google.firebase.firestore.local.SQLiteDocumentOverlayCache.decodeOverlay(SQLiteDocumentOverlayCache.java)
at com.google.firebase.firestore.local.SQLiteDocumentOverlayCache.lambda$processOverlaysInBackground$5(SQLiteDocumentOverlayCache.java)
at com.google.firebase.firestore.local.SQLiteDocumentOverlayCache.lambda$processOverlaysInBackground$5$SQLiteDocumentOverlayCache(SQLiteDocumentOverlayCache.java)
at com.google.firebase.firestore.local.-$$Lambda$SQLiteDocumentOverlayCache$PNl4A-oJqX8nHYKTIlNfewPjqOU.run(-.java:8)
at com.google.firebase.firestore.util.-$$Lambda$PNiE7SuEFxRjAZH7pJpZIFOFjWg.execute(-.java)
at com.google.firebase.firestore.local.SQLiteDocumentOverlayCache.processOverlaysInBackground(SQLiteDocumentOverlayCache.java:23)
at com.google.firebase.firestore.local.SQLiteDocumentOverlayCache.lambda$processSingleCollection$1(SQLiteDocumentOverlayCache.java)
at com.google.firebase.firestore.local.SQLiteDocumentOverlayCache.lambda$processSingleCollection$1$SQLiteDocumentOverlayCache(SQLiteDocumentOverlayCache.java)
at com.google.firebase.firestore.local.-$$Lambda$SQLiteDocumentOverlayCache$cYi4Cr9jm_0SezP9UVaUuAt693w.accept(-.java:8)
at com.google.firebase.firestore.local.SQLitePersistence$Query.forEach(SQLitePersistence.java:13)
at com.google.firebase.firestore.local.SQLiteDocumentOverlayCache.processSingleCollection(SQLiteDocumentOverlayCache.java:54)
at com.google.firebase.firestore.local.SQLiteDocumentOverlayCache.getOverlays(SQLiteDocumentOverlayCache.java:78)
at com.google.firebase.firestore.local.LocalDocumentsView.populateOverlays(LocalDocumentsView.java:33)
at com.google.firebase.firestore.local.LocalDocumentsView.getOverlayedDocuments(LocalDocumentsView.java:9)
at com.google.firebase.firestore.local.LocalStore.lambda$writeLocally$2(LocalStore.java:55)
at com.google.firebase.firestore.local.LocalStore.lambda$writeLocally$2$LocalStore(LocalStore.java)
at com.google.firebase.firestore.local.-$$Lambda$LocalStore$cg_93_KSzr574nUI4weqpmjMR0A.get(-.java:8)
at com.google.firebase.firestore.local.SQLitePersistence.runTransaction(SQLitePersistence.java:20)
at com.google.firebase.firestore.local.LocalStore.writeLocally(LocalStore.java:42)
at com.google.firebase.firestore.core.SyncEngine.writeMutations(SyncEngine.java:7)
at com.google.firebase.firestore.core.FirestoreClient.lambda$write$12(FirestoreClient.java:2)
at com.google.firebase.firestore.core.FirestoreClient.lambda$write$12$FirestoreClient(FirestoreClient.java)
at com.google.firebase.firestore.core.-$$Lambda$FirestoreClient$EkV-69Na9I9DmQjVN9C_ABIfHUQ.run(-.java:6)
at com.google.firebase.firestore.util.AsyncQueue.lambda$enqueue$2(AsyncQueue.java)
at com.google.firebase.firestore.util.-$$Lambda$AsyncQueue$Y9GO7zO2DX6MzQJ5TbKtKW_NzO0.call(-.java:2)
at com.google.firebase.firestore.util.AsyncQueue$SynchronizedShutdownAwareExecutor.lambda$executeAndReportResult$1(AsyncQueue.java)
at com.google.firebase.firestore.util.-$$Lambda$AsyncQueue$SynchronizedShutdownAwareExecutor$pKSAgg-ozJ8RbUveSl-44aUfFQw.run(-.java:4)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:463)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:307)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at com.google.firebase.firestore.util.AsyncQueue$SynchronizedShutdownAwareExecutor$DelayedStartFactory.run(AsyncQueue.java:15)
at java.lang.Thread.run(Thread.java:1012)
Fatal Exception: i.b.a.b.i.b: Complete with: result l.b.m1.a$b@d06d159
at com.google.android.gms.tasks.zzw.zzh(zzw.java:5)
at com.google.android.gms.tasks.zzw.zza(zzw.java:8)
at com.google.android.gms.tasks.zzz.run(zzz.java:27)
at com.google.firebase.firestore.util.ThrottledForwardingExecutor.lambda$execute$0(ThrottledForwardingExecutor.java)
at com.google.firebase.firestore.util.ThrottledForwardingExecutor.lambda$execute$0$ThrottledForwardingExecutor(ThrottledForwardingExecutor.java)
at com.google.firebase.firestore.util.-$$Lambda$ThrottledForwardingExecutor$MfIJbVuxZtLwosAgPzPA-cU66Ko.run(-.java:4)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
在firebase升级24.2.2之后,我出现了这个错误
Fatal Exception: java.lang.RuntimeException: Internal error in Cloud Firestore (24.2.2).
at com.google.firebase.firestore.util.AsyncQueue.lambda$panic$3(AsyncQueue.java:19)
at com.google.firebase.firestore.util.-$$Lambda$AsyncQueue$jx84dqgUsF4ojecSMurRqFLFD1Y.run(-.java:2)
at android.os.Handler.handleCallback(Handler.java:914)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:225)
at android.app.ActivityThread.main(ActivityThread.java:7564)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
Caused by java.lang.RuntimeException: android.database.sqlite.SQLiteBlobTooBigException: Row too big to fit into CursorWindow requiredPos=0, totalRows=1
at com.google.firebase.firestore.util.AsyncQueue$SynchronizedShutdownAwareExecutor.lambda$executeAndReportResult$1(AsyncQueue.java:14)
at com.google.firebase.firestore.util.-$$Lambda$AsyncQueue$SynchronizedShutdownAwareExecutor$pKSAgg-ozJ8RbUveSl-44aUfFQw.run(-.java:4)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
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:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at com.google.firebase.firestore.util.AsyncQueue$SynchronizedShutdownAwareExecutor$DelayedStartFactory.run(AsyncQueue.java:15)
at java.lang.Thread.run(Thread.java:919)
Caused by android.database.sqlite.SQLiteBlobTooBigException: Row too big to fit into CursorWindow requiredPos=0, totalRows=1
at android.database.sqlite.SQLiteConnection.nativeExecuteForCursorWindow(SQLiteConnection.java)
at android.database.sqlite.SQLiteConnection.executeForCursorWindow(SQLiteConnection.java:942)
at android.database.sqlite.SQLiteSession.executeForCursorWindow(SQLiteSession.java:838)
at android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:62)
at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:155)
at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:142)
at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:232)
at android.database.AbstractCursor.moveToNext(AbstractCursor.java:287)
at com.google.firebase.firestore.local.SQLitePersistence$Query.forEach(SQLitePersistence.java:5)
at com.google.firebase.firestore.local.SQLiteDocumentOverlayCache.processSingleCollection(SQLiteDocumentOverlayCache.java:54)
at com.google.firebase.firestore.local.SQLiteDocumentOverlayCache.getOverlays(SQLiteDocumentOverlayCache.java:78)
at com.google.firebase.firestore.local.LocalDocumentsView.populateOverlays(LocalDocumentsView.java:33)
at com.google.firebase.firestore.local.LocalDocumentsView.getOverlayedDocuments(LocalDocumentsView.java:9)
at com.google.firebase.firestore.local.LocalStore.lambda$writeLocally$2(LocalStore.java:55)
at com.google.firebase.firestore.local.LocalStore.lambda$writeLocally$2$LocalStore(LocalStore.java)
at com.google.firebase.firestore.local.-$$Lambda$LocalStore$cg_93_KSzr574nUI4weqpmjMR0A.get(-.java:8)
at com.google.firebase.firestore.local.SQLitePersistence.runTransaction(SQLitePersistence.java:20)
at com.google.firebase.firestore.local.LocalStore.writeLocally(LocalStore.java:42)
at com.google.firebase.firestore.core.SyncEngine.writeMutations(SyncEngine.java:7)
at com.google.firebase.firestore.core.FirestoreClient.lambda$write$12(FirestoreClient.java:2)
at com.google.firebase.firestore.core.FirestoreClient.lambda$write$12$FirestoreClient(FirestoreClient.java)
at com.google.firebase.firestore.core.-$$Lambda$FirestoreClient$EkV-69Na9I9DmQjVN9C_ABIfHUQ.run(-.java:6)
at com.google.firebase.firestore.util.AsyncQueue.lambda$enqueue$2(AsyncQueue.java)
at com.google.firebase.firestore.util.-$$Lambda$AsyncQueue$Y9GO7zO2DX6MzQJ5TbKtKW_NzO0.call(-.java:2)
at com.google.firebase.firestore.util.AsyncQueue$SynchronizedShutdownAwareExecutor.lambda$executeAndReportResult$1(AsyncQueue.java)
at com.google.firebase.firestore.util.-$$Lambda$AsyncQueue$SynchronizedShutdownAwareExecutor$pKSAgg-ozJ8RbUveSl-44aUfFQw.run(-.java:4)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
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:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at com.google.firebase.firestore.util.AsyncQueue$SynchronizedShutdownAwareExecutor$DelayedStartFactory.run(AsyncQueue.java:15)
at java.lang.Thread.run(Thread.java:919)
编辑:更改后
input = prefs.getKeys().map<String>((key) {
return (key + ":" + prefs.get(key).toString());
}).toList();
});
我有这个错误
Caused by java.lang.RuntimeException
com.google.firebase.firestore.util.AsyncQueue$SynchronizedShutdownAwareExecutor.lambda$executeAndReportResult$1 (AsyncQueue.java:14)
com.google.firebase.firestore.util.-$$Lambda$AsyncQueue$SynchronizedShutdownAwareExecutor$pKSAgg-ozJ8RbUveSl-44aUfFQw.run (-.java:4)
java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:457)
java.util.concurrent.FutureTask.run (FutureTask.java:266)
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run (ScheduledThreadPoolExecutor.java:301)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1162)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
com.google.firebase.firestore.util.AsyncQueue$SynchronizedShutdownAwareExecutor$DelayedStartFactory.run (AsyncQueue.java:15)
java.lang.Thread.run (Thread.java:784)
Caused by java.lang.IllegalStateException
android.database.CursorWindow.nativeGetBlob (CursorWindow.java)
android.database.CursorWindow.getBlob (CursorWindow.java:405)
android.database.AbstractWindowedCursor.getBlob (AbstractWindowedCursor.java:45)
com.google.firebase.firestore.local.SQLiteDocumentOverlayCache.processOverlaysInBackground (SQLiteDocumentOverlayCache.java:1)
com.google.firebase.firestore.local.SQLiteDocumentOverlayCache.lambda$processSingleCollection$1 (SQLiteDocumentOverlayCache.java)
com.google.firebase.firestore.local.SQLiteDocumentOverlayCache.lambda$processSingleCollection$1$SQLiteDocumentOverlayCache (SQLiteDocumentOverlayCache.java)
com.google.firebase.firestore.local.-$$Lambda$SQLiteDocumentOverlayCache$cYi4Cr9jm_0SezP9UVaUuAt693w.accept (-.java:8)
com.google.firebase.firestore.local.SQLitePersistence$Query.forEach (SQLitePersistence.java:13)
com.google.firebase.firestore.local.SQLiteDocumentOverlayCache.processSingleCollection (SQLiteDocumentOverlayCache.java:54)
com.google.firebase.firestore.local.SQLiteDocumentOverlayCache.getOverlays (SQLiteDocumentOverlayCache.java:78)
com.google.firebase.firestore.local.LocalDocumentsView.populateOverlays (LocalDocumentsView.java:33)
com.google.firebase.firestore.local.LocalDocumentsView.getOverlayedDocuments (LocalDocumentsView.java:9)
com.google.firebase.firestore.local.LocalStore.lambda$writeLocally$2 (LocalStore.java:55)
com.google.firebase.firestore.local.LocalStore.lambda$writeLocally$2$LocalStore (LocalStore.java)
com.google.firebase.firestore.local.-$$Lambda$LocalStore$cg_93_KSzr574nUI4weqpmjMR0A.get (-.java:8)
com.google.firebase.firestore.local.SQLitePersistence.runTransaction (SQLitePersistence.java:20)
com.google.firebase.firestore.local.LocalStore.writeLocally (LocalStore.java:42)
com.google.firebase.firestore.core.SyncEngine.writeMutations (SyncEngine.java:7)
com.google.firebase.firestore.core.FirestoreClient.lambda$write$12 (FirestoreClient.java:2)
com.google.firebase.firestore.core.FirestoreClient.lambda$write$12$FirestoreClient (FirestoreClient.java)
com.google.firebase.firestore.core.-$$Lambda$FirestoreClient$EkV-69Na9I9DmQjVN9C_ABIfHUQ.run (-.java:6)
com.google.firebase.firestore.util.AsyncQueue.lambda$enqueue$2 (AsyncQueue.java)
com.google.firebase.firestore.util.-$$Lambda$AsyncQueue$Y9GO7zO2DX6MzQJ5TbKtKW_NzO0.call (-.java:2)
com.google.firebase.firestore.util.AsyncQueue$SynchronizedShutdownAwareExecutor.lambda$executeAndReportResult$1 (AsyncQueue.java)
com.google.firebase.firestore.util.-$$Lambda$AsyncQueue$SynchronizedShutdownAwareExecutor$pKSAgg-ozJ8RbUveSl-44aUfFQw.run (-.java:4)
java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:457)
java.util.concurrent.FutureTask.run (FutureTask.java:266)
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run (ScheduledThreadPoolExecutor.java:301)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1162)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:636)
com.google.firebase.firestore.util.AsyncQueue$SynchronizedShutdownAwareExecutor$DelayedStartFactory.run (AsyncQueue.java:15)
java.lang.Thread.run (Thread.java:784)
这是相关的职位。我认为没有解决办法. https://github.com/firebase/firebase-android-sdk/issues/208
发布于 2022-08-25 09:54:10
由于这里的例外情况似乎是各种类型的,所以您必须一次看一次,并试图消除可能的原因。
第一个错误--或者更确切地说是下面抛出的异常--表明Cloud出现了运行时问题,这也可能是由于程序运行期间的函数调用导致的,该函数在程序运行期间查找与Cloud相关的内容,并且失败了,正如您刚才提到的,没有连接。如果可能的话,我建议您升级到云修复24.2.2版,并看到它附带了一个用于等待挂起的写入的修补程序,这也可能导致NullPointer异常。
Fatal Exception: java.lang.RuntimeException: Internal error in Cloud Firestore (24.2.1).
这里抛出的第二个异常有时是一个非常常见的java异常,通常是由于试图使用null
(就好像它是一个真正的引用.Also )一样发生的,检查您是否在使用对象而没有初始化it.Have,查看避免NullPointer异常的最佳实践。
您可以尝试使用以下片段:
input = prefs.getKeys().map<String>((key) {
return (key + ":" + prefs.get(key).toString());
}).toList();
});
而不是
input=prefs.getKeys().map<String>((key) {
return key + ":" + prefs.get(key).toString();
}).toList();
https://stackoverflow.com/questions/73471064
复制相似问题