当前位置: 首页 > 知识库问答 >
问题:

Gradle的冲突解决方案不适用于Android项目?

滑畅
2023-03-14
+--- com.squareup.burst:burst-junit4:1.0.2
|    +--- com.squareup.burst:burst:1.0.2
|    \--- junit:junit:4.11 -> 4.12
|         \--- org.hamcrest:hamcrest-core:1.3
+--- com.android.support.test.espresso:espresso-core:2.0
|    +--- com.squareup:javawriter:2.1.1
|    +--- org.hamcrest:hamcrest-integration:1.1
|    |    \--- org.hamcrest:hamcrest-core:1.1 -> 1.3
|    +--- org.hamcrest:hamcrest-library:1.1
|    |    \--- org.hamcrest:hamcrest-core:1.1 -> 1.3
|    +--- com.android.support.test.espresso:espresso-idling-resource:2.0
|    +--- com.android.support.test:testing-support-lib:0.1
|    |    \--- junit:junit-dep:4.10
|    |         \--- org.hamcrest:hamcrest-core:1.1 -> 1.3
|    +--- com.google.code.findbugs:jsr305:2.0.1
|    +--- javax.annotation:javax.annotation-api:1.2
|    \--- org.hamcrest:hamcrest-core:1.1 -> 1.3
...

如您所见,存在hamcrest-core版本冲突,但gradle似乎认识到了冲突,并应用了默认的“最新版本”策略,这正是我想要的。

但是,当尝试运行AssembleDebugTest(手动或通过Android Studio)时,我会得到

com.android.dex.DexException: Multiple dex files define Lorg/hamcrest/MatcherAssert;

对类似问题的一些回答建议排除ing不需要的jar,但我遇到了许多类似的冲突,而且有点失控。

共有1个答案

王扬
2023-03-14

经过进一步的挖掘,问题似乎在于我的依赖关系树包含hamcrest-core1.3和hamcrest-integration1.1,并且matcherassert在这两个版本之间从hamcrest-integration移动到hamcrest-core

所以gradle正在执行记录中的冲突解决;只是不同模块之间发生了冲突,这是我没想到的。

对所有三个hamcrest模块强制1.3解决了这个问题。

 类似资料:
  • 本文向大家介绍Android listview的滑动冲突解决方法,包括了Android listview的滑动冲突解决方法的使用技巧和注意事项,需要的朋友参考一下 Android listview的滑动冲突解决方法 在Android开发的过程中,有时候会遇到子控件和父控件都要滑动的情况,尤其是当子控件为listview的时候。就比如在一个ScrollView里有一个listview,这种情况较常见

  • 我需要创建一个android应用程序来显示实时电视源。据网关供应商介绍,该应用程序应该可以播放来自DVB网关多播的实时视频流,它可以流式输出UDP或RTP。我在我的电脑上设置了vlc来输出UDP和RTP,并试图让android播放器显示它们,结果手指断了。过了一会儿,我发现android只支持HTTP/S和RTSP实时流。我尝试了所有的FFMPEG解决方案和不同的媒体播放器,但都没有成功。我不是视

  • TL;DR两个gradle插件使用相同依赖项的不同版本,在调用其中一个插件时会导致编译错误。 > 我有一个使用Gradle4编译的Java项目。十、 该项目依赖于两个插件:gradle-jaxb-plugin和serenity-gradle-plugin。 两个插件共享一个依赖项,guice。 我需要升级一个插件(serenety)。升级会导致调用jaxb插件时发生冲突。 我做了一些调查和谷歌搜索

  • Windows 用tutorial进行的操作 若要进行pull操作,请右击tutorial目录,并选择‘拉取’。 用tutorial进行的操作 在以下画面点击‘确定’。 用tutorial进行的操作 我们看到画面上的警告信息表示自动合并失败。请点击‘关闭’以退出窗口。 用tutorial进行的操作 若您确认变更,请点击‘Yes’。 用tutorial进行的操作 TortoiseGit告诉我们:因"

  • 在上一个页面我们提及到,执行合并即可自动合并Git修改的部分。但是,也存在无法自动合并的情况。 如果远程数据库和本地数据库的同一个地方都发生了修改的情况下,因为无法自动判断要选用哪一个修改,所以就会发生冲突。 Git会在发生冲突的地方修改文件的内容,如下图。所以我们需要手动修正冲突。 ==分割线上方是本地数据库的内容, 下方是远程数据库的编辑内容。 如下图所示,修正所有冲突的地方之后,执行提交。

  • 解决冲突 CVS使用内联“冲突标志”来标记冲突,并且在更新时打印C。历史上讲,这导致了许多问题,因为CVS做得还不够。许多用户在它们快速闪过终端时忘记(或没有看到)C,即使出现了冲突标记,他们也经常忘记,然后提交了带有冲突标记的文件。 Subversion通过让冲突更明显来解决这个问题,它记住一个文件是处于冲突状态,在你运行svn resolved之前不会允许你提交修改,详情见“解决冲突(合并别人