当前位置: 首页 > 知识库问答 >
问题:

安装Firebase后Flutter不能在Android上运行

汪泓
2023-03-14

如果我把firebase_core添加到flutter项目中,它就不能在Android上运行。在iOS中这是可以的。

我有个分级错误。

    Launching lib/main.dart on Android SDK built for x86 in debug mode...
    Initializing gradle...
    Resolving dependencies...
    Running Gradle task 'assembleDebug'...
    registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
    registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
    registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
    registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
    registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)

    FAILURE: Build failed with an exception.

    * What went wrong:

        Could not determine the dependencies of task ':firebase_core:compileDebugAidl'.
        > Could not resolve all task dependencies for configuration ':firebase_core:debugCompileClasspath'.
           > Could not find com.google.firebase:firebase-core:.
             Required by:
                 project :firebase_core

  • pubspec:

    dependencies:
      date_format: ^1.0.6
      flutter:
        sdk: flutter

      url_launcher: ^5.0.2
      webview_flutter: ^0.3.5+3
        #path: ./../webview_flutter
      shared_preferences: ^0.5.1+2
      local_auth: ^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
      path_provider: ^0.5.0+1
      base32: ^1.0.1
      #json_serializable: ^2.0.3
      get_it: ^1.0.3
      rxdart: ^0.21.0
      flutter_html: ^0.9.6
      sqflite: ^1.1.3
      archive: ^2.0.8
      percent_indicator: ^1.0.14
      flutter_statusbarcolor: ^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

    null

    buildscript {
        ext.kotlin_version = '1.2.71'
        repositories {
            google()
            jcenter()
        }

        dependencies {

            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

            classpath 'com.google.gms:google-services:3.2.1'

            classpath 'com.android.tools.build:gradle:3.2.1'
        }
    }

    allprojects {
        repositories {
            google()
            jcenter()
        }
    }

    rootProject.buildDir = '../build'
    subprojects {
        project.buildDir = "${rootProject.buildDir}/${project.name}"
    }
    subprojects {
        project.evaluationDependsOn(':app')
    }

    task clean(type: Delete) {
        delete rootProject.buildDir
    }

    subprojects {
        project.configurations.all {
            resolutionStrategy.eachDependency { details ->
                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') { reader ->
>         localProperties.load(reader)
>     } }
> 
> def flutterRoot = localProperties.getProperty('flutter.sdk') if
> (flutterRoot == null) {
>     throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") }
> 
> def flutterVersionCode =
> localProperties.getProperty('flutter.versionCode') if
> (flutterVersionCode == null) {
>     flutterVersionCode = '1' }
> 
> def flutterVersionName =
> localProperties.getProperty('flutter.versionName') if
> (flutterVersionName == null) {
>     flutterVersionName = '1.0' }
> 
> apply plugin: 'com.android.application' apply plugin: 'kotlin-android'
> apply from:
> "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
> 
> android {
>     compileSdkVersion 28
> 
>     sourceSets {
>         main.java.srcDirs += 'src/main/kotlin'
>     }
> 
>     lintOptions {
>         disable 'InvalidPackage'
>     }
> 
>     defaultConfig {
>         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
>         applicationId "xxx"
>         minSdkVersion 21
>         targetSdkVersion 28
>         versionCode flutterVersionCode.toInteger()
>         versionName flutterVersionName
>         //testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
>     }
> 
>     buildTypes {
>         release {
>             // TODO: Add your own signing config for the release build.
>             // Signing with the debug keys for now, so `flutter run --release` works.
>             signingConfig signingConfigs.debug
>         }
>     } }
> 
> flutter {
>     source '../..' }
> 
> dependencies {
>     implementation "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'
> 
>     implementation 'com.google.firebase:firebase-core:16.0.8' }
> 
> apply plugin: 'com.google.gms.google-services'

那么我能做些什么来解决这个问题呢?正如我所说的,它可以在iOS上工作,并且我可以在Firebase控制台中看到Analytics仪表板。

详细信息...如果我打开Android Studio中的Android模块,它会返回这个gradle错误:

共有1个答案

韶硕
2023-03-14

我有其他的项目与Firebase很好的工作,所以我开始比较所有的版本...几个小时后,我发现问题出在Firebase-Core0.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.1+1/android/build.gradle

不同的是这一行:

似乎有了这个“Firebase-BOM”依赖关系,我的项目就会中断。

在此之后,我的项目在android和Firebase上执行得很好...我用Firebase Remote Config做了一些测试,一切正常。

我真的很感激如果有人能解释我为什么会发生这种事和一个更好的方法来解决这件事。

 类似资料:
  • 我刚刚下载了今天发布的新的Android Studio IDE,并安装了它。当我双击图标启动它时,什么也没有发生。我已经尝试了它的所有快捷方式,以及安装文件夹中的.exe。 我也尝试过重新启动机器,卸载/重新启动,并安装到一个没有空格的文件夹位置。有人知道为什么Android Studio不会启动吗?

  • 救命啊!我不知道如何安装JDK! 以下是一些调试信息: . . null null 有人能帮我安装JDK1.6或java-6-openjdk吗?

  • 问题内容: 我在Android手机上安装Pocketsphinx时遇到一些问题,但在CMUSphinx的支持论坛,IRC,现有的StackOverflow帖子或强化的Googling上找不到答案。如果在座的人有时间愿意提供帮助,我将不胜感激。 首先,我对于是否可以在Android上安装Pocketsphinx感到困惑。我相信我需要Java容器才能在Android上运行,因此我尝试安装Sphinx4

  • 目前我的Andoid工作室在外景 在控制台上 我的sdk位置是 1. 2 3. Android SDK找不到颤振在这个que有一个答案运行 但我不知道我应该为我的sdk位置做些什么…我的名声不好,所以我不能在那里发表评论,所以我在这里发布问题 也试过 正如在相同的 Que ans 中建议的那样,但上面给出了这个(我知道我的路径包含空格......我试图将我的Android放入下载中,这样就不会有空

  • 考虑到我已经遵循了所有这些步骤https://flutter.dev/docs/get-started/install/linux在我的Ubuntu 18.04LTS中,为什么会继续出现以下问题: 与StackOverflow中的另一个类似问题不同,在我安装flutter插件之前,“[✓]Android Studio(3.4版)”等于“[!]Android Studio”,具有相同的错误消息。在我