Flutter 中的 cloud_firestore 和 firebase_auth 兼容性问题
Posted
技术标签:
【中文标题】Flutter 中的 cloud_firestore 和 firebase_auth 兼容性问题【英文标题】:cloud_firestore and firebase_auth compatiblity issue in Flutter 【发布时间】:2019-01-21 10:51:40 【问题描述】:我正在开发一个 Flutter 应用。当我单独使用 cloud_firestore
和 firebase_auth
包时,我的应用程序可以正常工作。但是,当我将它们一起包含在我的 pubspecs.yaml
文件中时,构建失败并显示以下消息:
注意:/home/saber/Code/mobile_dev/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.7.4/android/src/main/java/io/flutter/ plugins/firebase/cloudfirestore/CloudFirestorePlugin.java 使用未经检查或不安全的操作。 注意:使用 -Xlint:unchecked 重新编译以获取详细信息。 注意:/home/saber/Code/mobile_dev/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_auth-0.5.18/android/src/main/java/io/flutter/plugins/firebaseauth/FirebaseAuthPlugin。 java 使用或覆盖已弃用的 API。 注意:使用 -Xlint:deprecation 重新编译以获取详细信息。 注意:/home/saber/Code/mobile_dev/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_auth-0.5.18/android/src/main/java/io/flutter/plugins/firebaseauth/FirebaseAuthPlugin。 java 使用未经检查或不安全的操作。 注意:使用 -Xlint:unchecked 重新编译以获取详细信息。 注意:/home/saber/Code/mobile_dev/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core-0.2.5/android/src/main/java/io/flutter/plugins/firebase/core/ FirebaseCorePlugin.java 使用未经检查或不安全的操作。 注意:使用 -Xlint 重新编译:详细信息未选中。
FAILURE:构建失败并出现异常。
出了什么问题: 任务 ':app:transformDexArchiveWithExternalLibsDexMergerForDebug' 执行失败。java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: 无法合并 dex
以下是我的 pubspec.yaml 文件中的依赖项:
dependencies:
flutter:
sdk: flutter
firebase_auth: ^0.5.18
cloud_firestore: ^0.7.4
我检查了软件包的版本,它们似乎都是最新版本。
对于解决此问题的任何帮助将不胜感激!
这可能与this 问题有关,但我不确定。
【问题讨论】:
你在你的 android/app/build.gradle 文件中添加了apply plugin: 'com.google.gms.google-services'
吗?
感谢您的回复,是的,我已经将此添加到我的 build.gradle 文件中。
【参考方案1】:
你需要关注这个setup:
打开android/app/build.gradle并在文件底部添加:
apply plugin: 'com.google.gms.google-services'
并在 android/build.gradle 中添加以下内容:
buildscript
repositories
// ,,,
dependencies
// ...
classpath 'com.google.gms:google-services:3.2.1'
【讨论】:
我已经按照这个设置。请注意,当我单独使用每个包时,它们都可以正常工作。当我将两个包都添加到依赖项时,我只会收到错误。【参考方案2】:在 android/build.gradle 中仅使用此依赖项并删除任何其他依赖项
classpath 'com.android.tools.build:gradle:3.1.2'
classpath 'com.google.gms:google-services:3.2.1'
你必须在 pubspec.yaml 中使用这个版本
firebase_auth: 0.5.11
google_sign_in: 3.0.4
cloud_firestore: 0.7.3
因为这些版本已经更新了 gradle 工具。
【讨论】:
【参考方案3】:更新你的 gradle 版本。我遇到了同样的问题,我已经通过以下步骤解决了。
第 1 步: 在 app/build.gradle 中
apply plugin: 'com.google.gms.google-services'
defaultConfig
minSdkVersion 16
targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
****multiDexEnabled true****
第 2 步: 在 android/build.gradle 中更改 gradle 版本依赖
classpath 'com.android.tools.build:gradle:3.4.1'
classpath 'com.google.gms:google-services:3.2.0'
第 3 步: pubspec.ymal 中最新版本的 firebase_auth 和 cloud_firestore
cloud_firestore: ^0.12.5+1
firebase_auth: ^0.11.1+6
google_sign_in: ^4.0.2
【讨论】:
【参考方案4】:对我来说,只需在应用 build.gradle 中将 minSDKVersion 更改为 23。
【讨论】:
【参考方案5】:以下更新应该可以解决问题:
更新android/gradle/wrapper/gradle-wrapper.properties
到distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-all.zip
并更新依赖和版本
在 android/build.gradle
致dependencies
classpath 'com.android.tools.build:gradle:3.5.3'
classpath 'com.google.gms:google-services:4.3.2'
还有android/build.gradle
buildscript
ext.kotlin_version = '1.3.61'
在 pubspec.yaml
firebase_core: ^0.4.2+1
cloud_firestore: ^0.12.11
【讨论】:
【参考方案6】:在 app/build.gradle 中升级你的 gradle
运行 flutter pub upgrade 以获取最新的依赖项!
【讨论】:
以上是关于Flutter 中的 cloud_firestore 和 firebase_auth 兼容性问题的主要内容,如果未能解决你的问题,请参考以下文章
Flutter (iOS) - 在 GeneratedPluginRegistrant.m 中找不到模块“cloud_firestore”
Flutter - 任务':cloud_firestore:compileDebugJavaWithJavac'的执行失败
Flutter:[cloud_firestore/unknown] NoSuchMethodError:null 上的无效成员:'includeMetadataChanges'(Flutter Web
Flutter:cloud_firestore 的构建错误:高于版本“0.7.4”
I/flutter (22027):MissingPluginException(在通道 plugins.flutter.io/cloud_firestore 上找不到方法 DocumentRefer