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

查看:757
本文介绍了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 code>到 api 错误消失。但这不是解决方案。我有应用程序模块和一个库模块。应用程序build.gradle只有一个依赖项:

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

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



来自gradlew app的依赖关系:依赖关系(文本的裁剪):
$ b 编译

  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依赖关系

  $ firebase_version
实现com.google.firebase:firebase-crash:$ firebase_version $ {
// android firebase
implementation'com.google.firebase:firebase-core:$ firebase_version
implementationcom.google.firebase:firebase-messaging:$ firebase_version
implementationcom.google.firebase:firebase-ads:$ firebase_version
// android support
实现com.android.support:appcompat-v7:$support_version
implementationcom.android.support:design:$support_version
implementationcom.android.support:cardview-v7:$ support_version
i mplementationcom.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'

//服务器
实现文件('libs ('libs / yyy.jar')
实现文件('libs / zzz.jar')

//测试
testImplementation'junit:junit:4.12'

}

版本:

  ext {
firebase_version = '11 .6.0'
support_version = '26 .1.0'
}


解决方案

看起来,previou狡猾,您隐式地依赖于common-lib模块将Firebase SDK导出到您的应用模块。现在您已经从编译更改为实施,您不再导出这些SDK。因此,现在发生的情况是:google-services插件将firebase-core的v9.0.0添加到您的应用程序模块,因为它不再看到它出现在应用程序模块的可见类路径中。



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


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天全站免登陆