Android依赖项“..”在编译(..)和运行时(..)类路径中具有不同的版本

23

我升级到了Android Studio 3和Gradle 4,并在我的build.gradle文件中将compile改为implementation,但是我遇到了错误:

Error:Execution failed for task ':app:preDebugBuild'.
> Android dependency 'com.google.firebase:firebase-core' has different version for the compile (9.0.0) and runtime (11.6.0) classpath. You should manually set the same version via DependencyResolution
当我将implementation更改为api时,错误消失了。但这不是解决方案。我有一个应用程序模块和一个库模块。应用程序build.gradle只有一个依赖项。
implementation project(':common-lib')

apply plugin: 'com.google.gms.google-services' 已经正确地放置在 app build.gradle 文件的末尾(在迁移到 Gradle 4 之前该项目已经可以正常工作)

从 gradlew app:dependencies 中获取的依赖关系(文本片段):

编译

debugAndroidTestCompileClasspath - Resolved configuration for compilation for variant: debugAndroidTest
+--- com.google.firebase:firebase-core:9.0.0
|    \--- com.google.firebase:firebase-analytics:9.0.0
|         +--- com.google.android.gms:play-services-basement:9.0.0
|         |    \--- com.android.support:support-v4:23.0.0
|         |         \--- com.android.support:support-annotations:23.0.0
|         +--- com.google.firebase:firebase-common:9.0.0
|         |    +--- com.google.android.gms:play-services-basement:9.0.0 (*)
|         |    \--- com.google.android.gms:play-services-tasks:9.0.0
|         |         \--- com.google.android.gms:play-services-basement:9.0.0 (*)
|         \--- com.google.firebase:firebase-analytics-impl:9.0.0
|              +--- com.google.android.gms:play-services-base:9.0.0
|              |    +--- com.google.android.gms:play-services-basement:9.0.0 (*)
|              |    +--- com.google.firebase:firebase-common:9.0.0 (*)
|              |    \--- com.google.android.gms:play-services-tasks:9.0.0 (*)
|              +--- com.google.android.gms:play-services-basement:9.0.0 (*)
|              +--- com.google.firebase:firebase-iid:9.0.0
|              |    +--- com.google.android.gms:play-services-basement:9.0.0 (*)
|              |    \--- com.google.firebase:firebase-common:9.0.0 (*)
|              \--- com.google.firebase:firebase-common:9.0.0 (*)
\--- project :common-lib
(............)

运行时

debugAndroidTestRuntimeClasspath - Resolved configuration for runtime for variant: debugAndroidTest
+--- com.google.firebase:firebase-core:9.0.0 -> 11.6.0
|    \--- com.google.firebase:firebase-analytics:11.6.0
|         +--- com.google.android.gms:play-services-basement:11.6.0
|         |    +--- com.android.support:support-v4:25.2.0 -> 26.1.0
|         |    |    +--- com.android.support:support-compat:26.1.0
|         |    |    |    +--- com.android.support:support-annotations:26.1.0
|         |    |    |    \--- android.arch.lifecycle:runtime:1.0.0
|         |    |    |         +--- android.arch.lifecycle:common:1.0.0
|         |    |    |         \--- android.arch.core:common:1.0.0
|         |    |    +--- com.android.support:support-media-compat:26.1.0
|         |    |    |    +--- com.android.support:support-annotations:26.1.0
|         |    |    |    \--- com.android.support:support-compat:26.1.0 (*)
|         |    |    +--- com.android.support:support-core-utils:26.1.0
|         |    |    |    +--- com.android.support:support-annotations:26.1.0
|         |    |    |    \--- com.android.support:support-compat:26.1.0 (*)
|         |    |    +--- com.android.support:support-core-ui:26.1.0
|         |    |    |    +--- com.android.support:support-annotations:26.1.0
|         |    |    |    \--- com.android.support:support-compat:26.1.0 (*)
|         |    |    \--- com.android.support:support-fragment:26.1.0
|         |    |         +--- com.android.support:support-compat:26.1.0 (*)
|         |    |         +--- com.android.support:support-core-ui:26.1.0 (*)
|         |    |         \--- com.android.support:support-core-utils:26.1.0 (*)
|         |    \--- com.google.android.gms:play-services-basement-license:11.6.0
|         +--- com.google.firebase:firebase-common:11.6.0
|         |    +--- com.google.android.gms:play-services-basement:11.6.0 (*)
|         |    +--- com.google.android.gms:play-services-tasks:11.6.0
|         |    |    +--- com.google.android.gms:play-services-basement:11.6.0 (*)
|         |    |    \--- com.google.android.gms:play-services-tasks-license:11.6.0
|         |    \--- com.google.firebase:firebase-common-license:11.6.0
|         +--- com.google.firebase:firebase-analytics-impl:11.6.0
|         |    +--- com.google.android.gms:play-services-basement:11.6.0 (*)
|         |    +--- com.google.firebase:firebase-iid:11.6.0
|         |    |    +--- com.google.android.gms:play-services-basement:11.6.0 (*)
|         |    |    +--- com.google.firebase:firebase-common:11.6.0 (*)
|         |    |    +--- com.google.android.gms:play-services-tasks:11.6.0 (*)
|         |    |    \--- com.google.firebase:firebase-iid-license:11.6.0
|         |    +--- com.google.firebase:firebase-common:11.6.0 (*)
|         |    +--- com.google.android.gms:play-services-tasks:11.6.0 (*)
|         |    \--- com.google.firebase:firebase-analytics-impl-license:11.6.0
|         \--- com.google.firebase:firebase-analytics-license:11.6.0
\--- project :common-lib
(.............)

已编辑:

应用程序依赖项

dependencies {
    implementation project(':common-lib')
}

常用库依赖

dependencies {
    //android firebase
    implementation "com.google.firebase:firebase-core:$firebase_version"
    implementation "com.google.firebase:firebase-crash:$firebase_version"
    implementation "com.google.firebase:firebase-messaging:$firebase_version"
    implementation "com.google.firebase:firebase-ads:$firebase_version"
    //android support
    implementation "com.android.support:appcompat-v7:$support_version"
    implementation "com.android.support:design:$support_version"
    implementation "com.android.support:cardview-v7:$support_version"
    implementation "com.android.support:percent:$support_version"
    //others
    implementation 'com.google.code.gson:gson:2.8.0'
    implementation 'com.hannesdorfmann:adapterdelegates3:3.0.1'
    implementation 'net.danlew:android.joda:2.9.9'
    implementation 'org.ocpsoft.prettytime:prettytime:4.0.1.Final'
    implementation 'com.squareup.picasso:picasso:2.5.2'
    implementation 'com.github.simbiose:Encryption:2.0.1'

    //server
    implementation files('libs/xxx.jar')
    implementation files('libs/yyy.jar')
    implementation files('libs/zzz.jar')

    //tests
    testImplementation 'junit:junit:4.12'

}

版本:

ext {
    firebase_version = '11.6.0'
    support_version = '26.1.0'
}

请发布您的应用程序依赖项和库依赖项。 - user6490462
@Ibrahim发布了 - AppiDevo
你在你的应用程序依赖中包含了 com.google.firebase:firebase 库吗? - user6490462
5个回答

37

看起来,您以前隐式依赖于common-lib模块将Firebase SDK导出到您的应用程序模块中。现在您从“compile”更改为“implementation”,不再导出这些SDK。因此,现在的情况是:由于google-services插件不再在您的应用程序模块的可见类路径中看到它,所以它正在向您的应用程序模块添加firebase-core的v9.0.0版本。

您可以通过手动将正确版本的firebase-core添加到您的应用程序模块中来解决此问题。或者,您可以继续通过将“api”依赖关系改为“implementation”依赖关系,将Firebase SDK从库模块导出到应用程序模块。


google-services 插件是否会添加 firebase-core 到应用依赖项中?如果我将 firebase-core v.9 加入到依赖项中,它的行为是否相同? - user6490462
是的,就是这样工作的。手动添加正确的版本到您的应用程序中以强制使所有版本匹配。 - Doug Stevenson

5
这是我做的:
将以下代码添加到您的buildscript中
subprojects {
  project.configurations.all {
     resolutionStrategy.eachDependency { details ->
        if (details.requested.group == 'com.android.support'
              && !details.requested.name.contains('multidex') ) {
           details.useVersion "version which should be used - in your case 11.6.0"
        }
     }
  }
}

最好的问候,

Eddi


1
无法工作,出现新错误:“在类型为org.gradle.api.Project的项目“:app”中找不到未知属性'resolutionStrategy'。” - busuu

3

对我来说,通过更改顶级gradle文件中的google-services版本解决了这个问题。似乎旧版本间接注入了firebase-core版本,并且显式更新firebase版本可以解决冲突。

classpath 'com.google.gms:google-services:4.0.2' // Just updated the version here.

1

我将compileSdkVersion和targetSdkVersion升级到28,也遇到了同样的错误。

我将app.gradle中的所有依赖项版本升级到28.0.0,并在项目.gradle文件中将com.android.tools.build:gradle升级到3.3.2

即 classpath 'com.android.tools.build:gradle:3.3.2'

此后,项目成功同步。


0
subprojects {
    project.configurations.all {
        resolutionStrategy.eachDependency { details ->
            if (details.requested.group == 'com.android.support'
                    && !details.requested.name.contains('multidex') ) {
                details.useVersion "26.1.0"
            }
        }
    }
}

将此代码放入您的项目gradle中。

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