项目':app'中出现依赖冲突。应用程序(15.0.2)和测试应用程序(12.0.1)的已解决版本不同(可能与OneSignal和Firebase有关)。

4

我在Android Studio 3.0.1上似乎无法构建我的应用程序gradle(生成apk可以工作)。以下是构建输出。

Error:FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:preDebugAndroidTestBuild'.
> Conflict with dependency 'com.google.firebase:firebase-messaging' in project ':app'. 
Resolved versions for app (15.0.2) and test app (12.0.1) differ. See https://d.android.com/r/tools/test-apk-dependency-conflicts.html for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 23s

这里是build.gradle文件的内容。

更新于 2018年8月21日:

我发现在外部库中存在冲突。

enter image description here

我发现即使Gradle产生了冲突错误,我仍然可以生成APK(Build APK)。消除Gradle错误的方法是删除/注释掉此行:

implementation 'com.google.android.gms:play-services-places:15.0.1'

但是 APK 没有编译。以前可以工作,我意识到这个问题可能发生在我不得不在另一个项目中包含 Firebase(基于 cordova 的 Android 应用程序)之后,该项目使用了相同的 Android Studio。我的其他同事的机器上并没有出现这个问题。我该如何解决?谢谢。


1
请更新您的帖子,包括项目和应用程序模块的build.gradle文件。 - Bob Snyder
我已经添加了 build.gradle 文件。 - Axil
@Axil,我在你的build.gradle文件中没有看到这行代码:apply plugin: 'com.google.gms.google-services'。你是不是漏掉了?请回复 @。 - Alex Mamo
@AlexMamo,它从来没有存在过。我尝试添加那行代码,但是出现了这个错误:Error:(14, 0) 找不到ID为'com.google.gms.google-services'的插件。 - Axil
classpath 'com.android.tools.build:gradle:3.1.0' - Axil
显示剩余3条评论
5个回答

0
尝试使用以下配置强制指定 Firebase 依赖项的版本。
android {
    configurations.all {
        resolutionStrategy.force 'com.google.firebase:firebase-core:16.0.1'
    }
}

我已经添加了build.gradle文件,以防万一。 - Axil

0

看起来有两个库依赖于firebase-messaging库,它们依赖于不同的版本。要找出它们是哪些,请转到Android Studio中的终端窗口并运行此命令:

./gradlew app:dependencies

这将以树形结构显示项目中的所有依赖项。一旦检测到哪些库添加了重复的库,您可以尝试以下方法之一:

1)在build.gradle中检查父依赖项的其他版本,这些版本都使用传递性重复依赖项的相同版本。

2)从父依赖项中排除较低版本的依赖项。例如:

  implementation('com.example.abc:def:1.0.0') {
     exclude group: 'com.google.firebase', module: 'firebase-messaging' 
  }

3) 强制使用带有解决策略的固定版本:

configurations.all {
  resolutionStrategy { 
     force com.google.firebase:firebase-messaging:15.0.2
  }
}

0

依赖项OneSignal正在使用旧版本的play-service

您有以下几种解决方法:

  • 从OneSignal中排除play-service并强制使用最新版本-您正在使用的版本(如@gizembrh answer)。 (我不建议,因为OneSignal的代码可能会与新的play-service崩溃
  • 下载OneSignal SDK并将其作为模块放入您的项目中。 然后更新OneSignal的play-service版本,解决其已弃用的方法(如果有)。 (繁琐的工作
  • 将您的play-service版本降级为与OneSignal相同的版本。 (我认为这是最简单的

我认为第三个选项最适合您。 因为您只需要降级您的play-service版本。 请参见OneSignal build.gradle play-service version

def playServicesVersion = '12.0.0'
implementation "com.google.android.gms:play-services-places:$playServicesVersion"
implementation "com.google.android.gms:play-services-maps:$playServicesVersion"

同时在您的项目级别的 build.gradle 文件中使用以下版本的 google-services。请参考OneSignal build.gradle google-services 版本

classpath 'com.google.gms:google-services:4.0.1'

如果你在gradle中进行以上两个变更,你就不会再遇到这个错误了。


抱歉,我很忙,仍然无法让它正常工作。这是我的更改和错误信息。https://gist.github.com/axilaris/cafe8f87ff17ba3a394834317a500d6c - Axil
类似但略有不同,现在它报错版本为“12.0.0”。 - Axil
你试过运行项目了吗? - Khemraj Sharma
好的,那就没问题了,如果您能运行项目,那就继续吧! - Khemraj Sharma
如果我移除实现行,Gradle 将能够正常工作,但它会抱怨无法构建 APK。 - Axil
显示剩余4条评论

0
请发布您的 build.gradle 文件。但是,没有看到它,我猜测您在 com.google.firebase:firebase-messagingimplementationtestImplementation 上有不同版本。

我已经添加了 build.gradle 文件。 - Axil

0

看起来是一个传递依赖问题。 com.google.android.gms:play-servicescom.onesignal:OneSignal 都使用了 com.google.firebase:firebase-messaging,但它们可能导入了不同的版本。我建议升级到这些库的最新版本。


嗯...在我的Android Studio上它曾经可以工作。某些原因导致它在这种情况下出现了问题。升级,我不确定,因为我有一个程序员在做这个,所以可能是一个问题。有没有更好的处理方法,它在其他的Android Studio上可以工作,我想要做的是恢复这个环境。谢谢。 - Axil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接