Android依赖关系'..'对于编译(..)和运行时(..)类路径具有不同的版本 [英] Android dependency '..' has different version for the compile (..) and runtime (..) classpath
问题描述
我迁移到了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')
来自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屋!