安装 Firebase 后 Flutter 无法在 Android 上运行
Posted
技术标签:
【中文标题】安装 Firebase 后 Flutter 无法在 Android 上运行【英文标题】:Flutter doesn't run on Android after install Firebase 【发布时间】:2019-08-27 21:01:40 【问题描述】:如果我将 firebase_core 添加到我的颤振项目中,它不会在 android 上运行。在 ios 中没问题。
我有这个 gradle 错误。
在为 x86 构建的 Android SDK 上以调试模式启动 lib/main.dart... 正在初始化梯度... 解决依赖关系... 正在运行 Gradle 任务“assembleDebug”... registerResGeneratingTask 已弃用,使用 registerGeneratedResFolders(FileCollection) registerResGeneratingTask 已弃用,使用 registerGeneratedResFolders(FileCollection) registerResGeneratingTask 已弃用,使用 registerGeneratedResFolders(FileCollection) registerResGeneratingTask 已弃用,使用 registerGeneratedResFolders(FileCollection) registerResGeneratingTask 已弃用,使用 registerGeneratedResFolders(FileCollection) FAILURE:构建失败并出现异常。 * 什么地方出了错: 无法确定任务 ':firebase_core:compileDebugAidl' 的依赖关系。 > 无法解析配置“:firebase_core:debugCompileClasspath”的所有任务依赖项。 > 找不到 com.google.firebase:firebase-core:。 要求: 项目:firebase_core 发布规范: 依赖项: 日期格式:^1.0.6 扑: sdk:颤动 url_launcher:^5.0.2 webview_flutter: ^0.3.5+3 #path: ./../webview_flutter 共享首选项:^0.5.1+2 本地身份验证:^0.4.0+1 http: ^0.12.0+1 xml: ^3.3.1 #flutter_auth_buttons:^0.3.1 flutter_masked_text: ^0.8.0 路径提供者:^0.5.0+1 base32:^1.0.1 #json_serializable:^2.0.3 获取它:^1.0.3 rxdart:^0.21.0 颤振_html:^0.9.6 sqflite:^1.1.3 存档:^2.0.8 百分比指标:^1.0.14 颤振状态栏颜色:^0.2.0 flutter_inappbrowser: ^1.1.1 scoped_model:^1.0.1 #Firebase firebase_core:^0.3.1+1 firebase_analytics:^2.1.1 build.gradle 构建脚本 ext.kotlin_version = '1.2.71' 存储库 谷歌() 中心() 依赖 类路径“org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version” 类路径 'com.google.gms:google-services:3.2.1' 类路径'com.android.tools.build:gradle:3.2.1' 所有项目 存储库 谷歌() 中心() rootProject.buildDir = '../build' 子项目 project.buildDir = "$rootProject.buildDir/$project.name" 子项目 project.evaluationDependsOn(':app') 任务清理(类型:删除) 删除 rootProject.buildDir 子项目 project.configurations.all resolutionStrategy.eachDependency 详细信息 -> if (details.requested.group == 'androidx.fragment' && !details.requested.name.contains('androidx')) details.useVersion "1.0.0" app/build.gradle > def localProperties = new Properties() def localPropertiesFile = > rootProject.file('local.properties') if (localPropertiesFile.exists()) > > localPropertiesFile.withReader('UTF-8') 阅读器 -> > localProperties.load(读者) > > > def flutterRoot = localProperties.getProperty('flutter.sdk') 如果 > (flutterRoot == null) > throw new GradleException("未找到 Flutter SDK。在 local.properties 文件中使用 flutter.sdk 定义位置。") > > def flutterVersionCode = > localProperties.getProperty('flutter.versionCode') 如果 > (flutterVersionCode == null) > 颤振版本代码 = '1' > > def 颤振版本名称 = > localProperties.getProperty('flutter.versionName') 如果 > (flutterVersionName == null) > 颤振版本名称 = '1.0' > > 应用插件:'com.android.application' 应用插件:'kotlin-android' > 申请: > “$flutterRoot/packages/flutter_tools/gradle/flutter.gradle” > > 安卓 > compileSdkVersion 28 > > 源集 > main.java.srcDirs += 'src/main/kotlin' > > > lintOptions > 禁用“无效包” > > > 默认配置 > // TODO:指定您自己的唯一应用程序 ID (https://developer.android.com/studio/build/application-id.html)。 > 应用程序 ID“xxx” > minSdkVersion 21 > targetSdkVersion 28 > 版本代码flutterVersionCode.toInteger() > 版本名称颤振版本名称 > //testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" > > > 构建类型 > 释放 > // TODO:为发布构建添加您自己的签名配置。 > // 现在使用调试密钥签名,所以 `flutter run --release` 可以工作。 > 签名配置签名配置.debug > > > > 颤动 > 来源'../..' > > 依赖 > 实施“org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version” > testImplementation 'junit:junit:4.12' > //androidTestImplementation 'com.android.support.test:runner:1.0.2' > //androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' > > 实施 'com.google.firebase:firebase-core:16.0.8' > > 应用插件:'com.google.gms.google-services'那么我能做些什么来解决这个问题呢?正如我所说,它适用于 iOS,我可以在 Firebase 控制台中看到 Analytics 仪表板。
更多信息...如果我在 Android Studio 中打开 Android 模块,它会返回此 gradle 错误:
【问题讨论】:
【参考方案1】:在 pubspec.yaml 中做一个小改动。 将 firebase_core: ^0.3.1+1 版本更改为 firebase_core: 0.3.1+1 。 只需删除 ^ 。 firestore 的新更新导致此问题。
【讨论】:
【参考方案2】:我解决了这个问题。我做了一些疯狂的事情,但我的项目正在运行。
我有其他与 Firebase 配合良好的项目,所以我开始比较所有版本... 几个小时后,我发现问题是来自 firebase-core 0.3.2 依赖项的“firebase-bom” .
所以,这就是我为解决问题所做的简历:
1)正在运行的项目使用:firebase_core:0.3.1,而我的项目使用的是 firebase_core:0.3.2。 2)我尝试使用这个版本0.3.1,但我不知道为什么,在Android Studio中我可以看到来自0.3.2的build.gradle被缓存了。
我意识到,因为在 Android Studio 上打开 android 文件夹后,可以看到如图所示的所有依赖项。这个文件的内容与我其他运行良好的项目不同。
所以我右键单击这个 build.gradle 文件并在 finder 中打开:
令我惊讶的是,它在 firebase-core 插件的 0.3.2 位置打开,但我使用的是 0.3.1 版本。
/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core-0.3.2/android/build.gradle
所以我做了一些疯狂的事情。
我替换了这个文件的所有内容:
/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core-0.3.2/android/build.gradle
我从这里复制了所有内容:
/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core-0.3.1+1/android/build.gradle
不同的是这一行:
实现 'com.google.firebase:firebase-bom:17.0.0'
似乎这个“firebase-bom”依赖破坏了我的项目。
在此之后,我的项目在 android 和 Firebase 上运行良好...我用 Firebase Remote Config 做了一些测试,一切正常。
如果有人能解释为什么会发生这种情况以及解决这个问题的更好方法,我真的很感激。
【讨论】:
【参考方案3】:使用
更改您的存储库部分repositories
jcenter()
maven url 'https://maven.google.com'
因为存储库 google()
只是 Gradle 4+ 中可用的 maven url 'https://maven.google.com'
的简写,如 this answer 中所述。
【讨论】:
谢谢,但更改存储库后,我遇到了同样的错误。 你是否在 buildscript 和 allprojects 中都添加了......当你同步文件时你是否连接到互联网。 是的,我将它添加到 buildscript 和 allprojects 中……当然,我有互联网,我可以毫无问题地安装其他依赖项,正如我所说,它在 iOS 上运行。我以前用过firebase很多次,但我不知道flutter有什么大不了的。正如您在我的帖子所附的图片中看到的那样,使用 Android Studio 打开 android 文件夹后,可能会看到有关此依赖项的一些错误,但我不知道该怎么办... 尝试将classpath 'com.google.gms:google-services:3.2.1'
更改为classpath 'com.google.gms:google-services:4.2.0'
我解决了问题并发布了答案..谢谢您的帮助以上是关于安装 Firebase 后 Flutter 无法在 Android 上运行的主要内容,如果未能解决你的问题,请参考以下文章
Flutter:无法从 firebase 读取数据。方法 '[]' 在 null 错误上被调用
使用firebase和flutter登录google后获取用户详细信息
Flutter web - 无法将图像上传到 Firebase 存储
添加flutter_firebase_ui后flutter应用程序崩溃