我迁移到 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
错误消失。但这不是解决方案。我有应用程序模块和一个库模块。 App build.gradle 只有一个依赖:
implementation project(':common-lib')
apply plugin: 'com.google.gms.google-services'
正确放置在应用程序 build.gradle 文件的底部(该项目在迁移到 Gradle 4 之前有效)
来自 gradlew app 的依赖项:依赖项(文本剪辑):
编译
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'
}
原文由 AppiDevo 发布,翻译遵循 CC BY-SA 4.0 许可协议
以前,您似乎隐式依赖 common-lib 模块将 Firebase SDK 导出到您的应用程序模块。现在您已经从“编译”更改为“实施”,您不再导出这些 SDK。所以,现在发生的事情是这样的:google-services 插件正在将 v9.0.0 的 firebase-core 添加到您的应用程序模块,因为它不再在您的应用程序模块的可见类路径中看到它。
您应该能够通过手动将 firebase-core 添加到正确版本的应用程序模块来解决此问题。或者,您可以通过切换到“api”依赖项而不是“实现”依赖项,继续将 Firebase SDK 从库模块导出到应用程序模块。