Firestore 问题:CloudFirestorePlugin.java 使用未经检查或不安全的操作

Posted

技术标签:

【中文标题】Firestore 问题:CloudFirestorePlugin.java 使用未经检查或不安全的操作【英文标题】:Firestore issue : CloudFirestorePlugin.java uses unchecked or unsafe operations 【发布时间】:2020-09-10 14:22:10 【问题描述】:

在安装 Firestore 依赖项后运行我的项目时出现以下错误。我该怎么办?

注意: C:\src\flutter.pub-cache\hosted\pub.dartlang.org\cloud_firestore-0.13.5\android\src\main\java\io\flutter\plugins\firebase\cloudfirestore\CloudFirestorePlugin.java 使用未经检查或不安全的操作。注意:重新编译 -Xlint:详细信息未选中。 D8:无法在单个 dex 文件中容纳请求的类(# 方法:79495 > 65536) com.android.builder.dexing.DexArchiveMergerException:出错时 合并 dex 档案:.dex 文件中方法引用的数量 不能超过 64K。了解如何解决此问题,请访问 https://developer.android.com/tools/building/multidex.html 在 com.android.builder.dexing.D8DexArchiveMerger.getExceptionToRethrow(D8DexArchiveMerger.java:131) 在 com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:118) 在 com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call(DexMergerTransformCallable.java:102) 在 com.android.build.gradle.internal.tasks.DexMergingTaskRunnable.run(DexMergingTask.kt:444) 在 com.android.build.gradle.internal.tasks.Workers$ActionFacade.run(Workers.kt:335) 在 org.gradle.workers.internal.AdapterWorkAction.execute(AdapterWorkAction.java:50) 在 org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:47) 在 org.gradle.workers.internal.NoIsolationWorkerFactory$1$1$1.create(NoIsolationWorkerFactory.java:65) 在 org.gradle.workers.internal.NoIsolationWorkerFactory$1$1$1.create(NoIsolationWorkerFactory.java:61) 在 org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:98) 在 org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.execute(NoIsolationWorkerFactory.java:61) 在 org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44) 在 org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41) 在 org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416) 在 org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406) 在 org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165) 在 org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250) 在 org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158) 在 org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102) 在 org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36) 在 org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41) 在 org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:56) 在 org.gradle.workers.internal.DefaultWorkerExecutor$3.call(DefaultWorkerExecutor.java:215) 在 org.gradle.workers.internal.DefaultWorkerExecutor$3.call(DefaultWorkerExecutor.java:210) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:215) 在 org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164) 在 org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:131) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) 在 org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56) 在 java.lang.Thread.run(Thread.java:748) 引起: com.android.tools.r8.CompilationFailedException:编译失败 在 com.android.tools.r8.utils.t.a(:55) 完成 com.android.tools.r8.D8.run(:11) 在 com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:116) ... 34 更多原因:com.android.tools.r8.utils.AbortException: 错误:null,无法在单个 dex 文件中容纳请求的类(# 方法:79495 > 65536)在 com.android.tools.r8.utils.Reporter.a(:21) 在 com.android.tools.r8.utils.Reporter.a(:7) 在 com.android.tools.r8.dex.VirtualFile.a(:33) 在 com.android.tools.r8.dex.VirtualFile$h.a(:5) 在 com.android.tools.r8.dex.ApplicationWriter.a(:13) 在 com.android.tools.r8.dex.ApplicationWriter.write(:35) 在 com.android.tools.r8.D8.d(:44) 在 com.android.tools.r8.D8.b(:1) 在 com.android.tools.r8.utils.t.a(:23) ... 36 更多

FAILURE:构建失败并出现异常。

出了什么问题:任务 ':app:mergeDexDebug' 执行失败。

执行 com.android.build.gradle.internal.tasks.Workers$ActionFacade 时发生故障 com.android.builder.dexing.DexArchiveMergerException:合并 dex 档案时出错: .dex 文件中的方法引用数不能超过 64K。 通过https://developer.android.com/tools/building/multidex.html了解如何解决此问题

尝试:使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。

通过https://help.gradle.org获得更多帮助

BUILD FAILED in 5m 31s [!] 收缩器可能无法优化 Java 字节码。 要禁用收缩器,请将 --no-shrink 标志传递给此命令。 要了解更多信息,请参阅:https://developer.android.com/studio/build/shrink-code 已完成 错误:Gradle 任务 assembleDebug 失败,退出代码为 1

【问题讨论】:

【参考方案1】:

如果你还没有启用multidex,那么去

/android/app/build.gradle 并添加

multidrxEnabled true

在默认配置中

应该是这样的:

defaultConfig 
            // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
            applicationId "com.example.chat_app_flutter_firebase"
            minSdkVersion 16
            targetSdkVersion 28
            versionCode flutterVersionCode.toInteger()
            versionName flutterVersionName
            testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

            //Enable multidex by adding this line 

            multiDexEnabled true
        

【讨论】:

是的!谢谢你的工作。你是怎么想出来的?我在问,以便我将来可以尝试帮助自己。 之前遇到过同样的问题,所以我知道?

以上是关于Firestore 问题:CloudFirestorePlugin.java 使用未经检查或不安全的操作的主要内容,如果未能解决你的问题,请参考以下文章

@firebase/firestore:Firestore (8.6.5):无法访问 Cloud Firestore 后端

Firestore:加入与 Firestore 定价

我试图向 Firestore 添加数据,但“Firestore 组件不存在”。终端给出这个错误信息

@firebase/firestore:Firestore (8.6.2):无法访问 Cloud Firestore 后端(React Js)

@firebase/firestore:Firestore (5.0.4):无法访问 Cloud Firestore 后端。后端在 10 秒内没有响应

类型错误:firestore.collection 不是函数(React、Redux、Firestore)