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
更改为 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屋!