Android 依赖项“.."对于编译 (..) 和运行时 (..) 类路径具有不同的版本 [英] Android dependency '..' has different version for the compile (..) and runtime (..) classpath

查看:33
本文介绍了Android 依赖项“.."对于编译 (..) 和运行时 (..) 类路径具有不同的版本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我迁移到 Android Studio 3 和 Gradle 4.然后我在 build.gradle 文件中将 compile 更改为 implementation.但我收到错误:

错误:任务:app:preDebugBuild"的执行失败.>Android 依赖项 'com.google.firebase:firebase-core' 对于编译 (9.0.0) 和运行时 (11.6.0) 类路径具有不同的版本.您应该通过 DependencyResolution 手动设置相同的版本

当我将 implementation 更改为 api 时,错误消失.但这不是解决方案.我有应用程序模块和一个库模块.应用 build.gradle 只有一个依赖项:

实现项目(':common-lib')

apply 插件:'com.google.gms.google-services' 被正确放置在应用 build.gradle 文件的底部(该项目在迁移到 Gradle 4 之前工作)>

来自 gradlew 应用程序的依赖项:依赖项(文本剪辑):

编译

debugAndroidTestCompileClasspath - 变体编译的解析配置: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 (*)\--- 项目:common-lib(…………)

运行时

debugAndroidTestRuntimeClasspath - 已解析的变体运行时配置: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\--- 项目:common-lib(…………)

应用依赖

依赖项{实施项目(':common-lib')}

common-lib 依赖

依赖项{//安卓火力基地实现com.google.firebase:firebase-core:$firebase_version"实现com.google.firebase:firebase-crash:$firebase_version"实现com.google.firebase:firebase-messaging:$firebase_version"实现com.google.firebase:firebase-ads:$firebase_version"//安卓支持实现com.android.support:appcompat-v7:$support_version"实现com.android.support:design:$support_version"实现com.android.support:cardview-v7:$support_version"实现com.android.support:percent:$support_version"//其他实现 'com.google.code.gson:gson:2.8.0'实施 'com.hannesdorfmann:adapterdelegates3:3.0.1'实现 'net.danlew:android.joda:2.9.9'实现 'org.ocpsoft.prettytime:prettytime:4.0.1.Final'实现 'com.squareup.picasso:picasso:2.5.2'实现 'com.github.simbiose:Encryption:2.0.1'//服务器实现文件('libs/xxx.jar')实现文件('libs/yyy.jar')实现文件('libs/zzz.jar')//测试testImplementation 'junit:junit:4.12'}

版本:

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

解决方案

之前,您似乎隐式地依赖 common-lib 模块将 Firebase SDK 导出到您的应用模块.现在您已从编译"更改为实现",您不再导出这些 SDK.所以,现在发生的事情是:google-services 插件正在将 firebase-core 的 v9.0.0 添加到您的应用模块,因为它不再在您的应用模块的可见类路径中看到它.

您应该能够通过将 firebase-core 手动添加到正确版本的应用模块来解决此问题.或者,您可以通过切换到api"依赖项而不是实现"依赖项,继续将 Firebase SDK 从您的库模块导出到您的应用模块.

I migrated to Android Studio 3 and Gradle 4. Then I changed compile to implementation in my build.gradle files. But I get the error:

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

When I change implementation to api the error disappear. But this is not the solution. I have the app module and one library module. App build.gradle has only one dependency:

implementation project(':common-lib')

The apply plugin: 'com.google.gms.google-services' is correctly placed at the bottom of the app build.gradle file (the project worked before migration to Gradle 4)

Dependencies from gradlew app:dependencies (clipping of text):

Compile

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
(............)

Runtime

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
(.............)

Edited:

app dependencies

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

common-lib dependencies

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'

}

versions:

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

解决方案

It appears that, previously, you were implicitly depending on the common-lib module to export Firebase SDKs to your app module. Now that you've changed from "compile" to "implementation", you're no longer exporting those SDKs. So, what's happening now is this: the google-services plugin is adding v9.0.0 of firebase-core to your app module since it no longer sees it present in the visible classpath of your app module.

You should be able to work around this by manually adding firebase-core to your app module at the correct version. Or, you can continue to export Firebase SDKs from your library module to your app module by switching to an "api" dependency instead of an "implementation" dependency.

这篇关于Android 依赖项“.."对于编译 (..) 和运行时 (..) 类路径具有不同的版本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆