Android依赖项'com.android.support:support-v4'具有不同的版本

8

我刚刚升级到Dart 2和最新版本的Flutter,现在我的应用程序无法构建。我在互联网上搜索过,但仍然不明白为什么会出现这种情况。

我收到的错误信息是:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:preDebugBuild'.
> Android dependency 'com.android.support:support-v4' has different version for the compile (26.1.0) and runtime (27.1.0) classpath. You should manually set the same version via DependencyResolution

项目 build.gradle 文件:

buildscript {
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath 'com.google.gms:google-services: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
}

pubspec.yaml:

dependencies:
  flutter:
    sdk: flutter

  cupertino_icons: ^0.1.2
  google_sign_in: ^3.0.2
  firebase_auth: ^0.5.5
  firebase_database: ^0.4.5
  firebase_core: ^0.2.3

  flutter_blue: ^0.3.3

dev_dependencies:
  flutter_test:
    sdk: flutter


# The following section is specific to Flutter.
flutter:

  # The following line ensures that the Material Icons font is
  # included with your application, so that you can use the icons in
  # the material Icons class.
  uses-material-design: true

我已经将我的软件包更新到最新版本,并且正在运行最新版本的Dart和Flutter。

我真的不明白是什么原因导致了这个错误。

有人可以帮忙吗?


1
看起来像是https://github.com/flutter/flutter/issues/14020。 - Günter Zöchbauer
@GünterZöchbauer 我已经尝试了所有的方法,但仍然无法正常工作! - Mo Meshkani
4个回答

22

将以下内容添加到Android项目级别的build.gradle文件的“子项目”部分中(正如Günter Zöchbauer在评论中提到的链接中也提到的):

   subprojects {

    project.evaluationDependsOn(':app')
//[PART TO ADD START]
    project.configurations.all {

        resolutionStrategy.eachDependency { details ->

            if (details.requested.group == 'com.android.support'
                    && !details.requested.name.contains('multidex') ) {
                details.useVersion "27.1.0"
            }
        }
    }
//[PART TO ADD END]
    }

浪费了半天时间在这上面!!!!!我已经准备好打自己了!!!你救了我的一天。感谢所有帮助解决这个问题的人。 - AhabLives
这也对我有帮助! - Dedan

1
我正在使用Flutter制作“QR扫描应用程序”时遇到了同样的问题,我只需更改demoapp->android->app->build.gradle->minSdkVersion中的“minSdkVersion 21”,它就可以完美运行。这是因为Flutter中的某些依赖关系不支持低于21的minSdk版本。
defaultConfig {
    // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
    applicationId "com.example"
    minSdkVersion 21
    targetSdkVersion 27
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

1
打开项目级别的build.gradle文件并添加以下代码片段。
subprojects {
    project.configurations.all {
        resolutionStrategy.eachDependency { details ->
            if (details.requested.group == 'com.android.support'
                && !details.requested.name.contains('multidex') ) {
                details.useVersion "26.1.0"
            }
        }
    }
}

在添加此内容后,您的项目级别的build.gradle文件将如下所示:
buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.1'


        // NOTE: Do not place your application dependencies here; they belong
       // in the individual module build.gradle files
    }
}

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

task clean(type: Delete) {
    delete rootProject.buildDir
}
subprojects {
    project.configurations.all {
        resolutionStrategy.eachDependency { details ->
            if (details.requested.group == 'com.android.support'
                && !details.requested.name.contains('multidex') ) {
                details.useVersion "26.1.0"
            }
        }
    }
}

Günter Zöchbauer提供的解决方案。链接。这对我很有用。希望能帮到你。


0

试试这个Android Studio中打开您的项目,然后等待同步,接着,

build.gradle更新为以下内容 在构建脚本下添加google()到repositories,使其看起来像这样

repositories {
        jcenter()
        google()
    }
update classpath
classpath 'com.android.tools.build:gradle:3.1.1'
Update distributionUrl in gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

implementation "com.android.support:support-v4:27.1.1"  // In case your targetting. 

2
请您能否将您的回答格式化,以便清晰地区分出文本和代码部分? - André Kool

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接