Android Gradle 插件 3.0.0:多个 dex 文件定义 Lorg/xmlpull/mxp1/MXParser 和 XStream
Android Gradle Plugin 3.0.0: Multiple dex files define Lorg/xmlpull/mxp1/MXParser with XStream
自带 xmlpullparser
的包含项目在 Android Studio 中总是需要格外小心,因为 Android 自带 xmlpullparser。
例如流行的 XML 映射器 XStream
需要这个排除 (1) (2) :
compile('com.thoughtworks.xstream:xstream:1.4.7') {
exclude group: 'xmlpull', module: 'xmlpull' //exclude xmlpull to avoid `Multiple dex files define`-error
}
Somewhere else我也看过:
compile('com.thoughtworks.xstream:xstream:1.4.7') {
exclude group: 'xmlpull'
exclude group: 'XmlPullParser'
}
关于这个问题的 news 是:排除在 Android 插件版本 2.3.3 上工作,而在 Android 插件版本 3.0.0 上我得到再次出错! (您可以在文件 > 项目结构 > 项目下看到 Android 插件版本)
有没有人知道如何更改 gradle 文件以在 Android Plugin Version 3.0.0 上获得 xstream 运行ning?
我只是怀疑 'XStream' 导致了那个错误。
16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter]
16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 失败:构建失败,出现异常。
16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter]
16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] * 出了什么问题:
16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 任务 ':app:transformDexArchiveWithExternalLibsDexMergerForDebug' 执行失败。
16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] > com.android.builder.dexing.DexArchiveMergerException: 无法合并 dex
16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter]
16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] * 异常是:
16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] org.gradle.api.tasks.TaskExecutionException:任务 ':app:transformDexArchiveWithExternalLibsDexMergerForDebug' 执行失败。
16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)
16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:63)
16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88)
16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248)
16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.internal.progress.DefaultBuildOperationExecutor. 执行(DefaultBuildOperationExecutor.java:197)
16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.internal.progress.DefaultBuildOperationExecutor.运行(DefaultBuildOperationExecutor.java:107)
16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241)
16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230)
16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:124)
16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:80)
16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:105)
16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:99)
16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:625)
16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:580)
16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:99)
16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 原因:java.lang.RuntimeException:com.android.builder.dexing.DexArchiveMergerException:无法合并 dex
16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 原因:com.android.builder.dexing.DexArchiveMergerException:无法合并 dex
16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:72)
16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:36)
16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 原因:com.android.dex.DexException:多个 dex 文件定义 Lorg/xmlpull/mxp1/MXParser;
16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:661)
16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:616)
16:40:26.674 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:598)
16:40:26.674 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
16:40:26.674 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 com.android.dx.merge.DexMerger.merge(DexMerger.java:198)
16:40:26.674 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:61)
16:40:26.674 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] ... 1 个
16:40:26.674 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter]
16:40:26.674 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter]
16:40:26.674 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] * 在 https://help.gradle.org 获得更多帮助
16:40:26.674 [错误] [org.gradle.internal.buildevents.BuildResultLogger]
16:40:26.674 [错误] [org.gradle.internal.buildevents.BuildResultLogger] 在 37 秒内构建失败
我终于找到了解决方法。但是,我仍然不解为什么它依赖于 Gradle 插件版本。
我正在使用 logback-android,它以某种方式依赖于 xpp3,正如您在依赖关系图中看到的那样:
+--- com.github.tony19:logback-android-classic:1.1.1-6
| | +--- com.github.tony19:logback-android-core:1.1.1-6
| | \--- com.github.tony19:apktool-lib:1.4.4-3
| | \--- com.google.android:android:2.1_r1
| | +--- commons-logging:commons-logging:1.1.1
| | +--- org.apache.httpcomponents:httpclient:4.0.1
| | | +--- org.apache.httpcomponents:httpcore:4.0.1
| | | +--- commons-logging:commons-logging:1.1.1
| | | \--- commons-codec:commons-codec:1.3
| | +--- org.khronos:opengl-api:gl1.1-android-2.1_r1
| | +--- xerces:xmlParserAPIs:2.6.2
| | \--- xpp3:xpp3:1.1.4c
必须要说的是,我在一个 utils 模块中声明了 logback-android,然后我使用 implementation project(:'myUtilsModule')
将其包含到我的应用程序中
现在我排除了组 xpp3
及其模块 xpp3
。组和模块名称 xmlpull
无效。:
// https://mvnrepository.com/artifact/com.github.tony19/logback-android-classic
implementation('com.github.tony19:logback-android-classic:1.1.1-6') {
exclude group: 'xpp3', module: 'xpp3' //in order to avoid "Multiple dex files define Lorg/xmlpull/v1/XmlPullParser;"
//exclude group: 'xmlpull', module: 'xmlpull' //This works usually on other libs to exclude xmlpull, but not on that one
}
我艰难地学会了如何阅读依赖关系图以及如何从图中排除项目 ;)
- 运行
- 依赖图中的每一行都具有以下格式
<group>:<module>:<version>
- 哪个映射到排除参数
exclude group: '<group>', module: '<module>'
或 exclude module: '<module>'
更新: 使用 logback-android-1.1.1-7+ 不再需要排除。
自带 xmlpullparser
的包含项目在 Android Studio 中总是需要格外小心,因为 Android 自带 xmlpullparser。
例如流行的 XML 映射器 XStream
需要这个排除 (1) (2) :
compile('com.thoughtworks.xstream:xstream:1.4.7') {
exclude group: 'xmlpull', module: 'xmlpull' //exclude xmlpull to avoid `Multiple dex files define`-error
}
Somewhere else我也看过:
compile('com.thoughtworks.xstream:xstream:1.4.7') {
exclude group: 'xmlpull'
exclude group: 'XmlPullParser'
}
关于这个问题的 news 是:排除在 Android 插件版本 2.3.3 上工作,而在 Android 插件版本 3.0.0 上我得到再次出错! (您可以在文件 > 项目结构 > 项目下看到 Android 插件版本)
有没有人知道如何更改 gradle 文件以在 Android Plugin Version 3.0.0 上获得 xstream 运行ning?
我只是怀疑 'XStream' 导致了那个错误。
16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 失败:构建失败,出现异常。 16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] * 出了什么问题: 16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 任务 ':app:transformDexArchiveWithExternalLibsDexMergerForDebug' 执行失败。 16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] > com.android.builder.dexing.DexArchiveMergerException: 无法合并 dex 16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] * 异常是: 16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] org.gradle.api.tasks.TaskExecutionException:任务 ':app:transformDexArchiveWithExternalLibsDexMergerForDebug' 执行失败。 16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100) 16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70) 16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:63) 16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54) 16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58) 16:40:26.671 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88) 16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52) 16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) 16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54) 16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) 16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34) 16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248) 16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) 16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) 16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.internal.progress.DefaultBuildOperationExecutor. 执行(DefaultBuildOperationExecutor.java:197) 16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.internal.progress.DefaultBuildOperationExecutor.运行(DefaultBuildOperationExecutor.java:107) 16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241) 16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230) 16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:124) 16:40:26.672 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:80) 16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:105) 16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:99) 16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:625) 16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:580) 16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:99) 16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63) 16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46) 16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55) 16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 原因:java.lang.RuntimeException:com.android.builder.dexing.DexArchiveMergerException:无法合并 dex 16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 原因:com.android.builder.dexing.DexArchiveMergerException:无法合并 dex 16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:72) 16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:36) 16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 原因:com.android.dex.DexException:多个 dex 文件定义 Lorg/xmlpull/mxp1/MXParser; 16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:661) 16:40:26.673 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:616) 16:40:26.674 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:598) 16:40:26.674 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171) 16:40:26.674 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 com.android.dx.merge.DexMerger.merge(DexMerger.java:198) 16:40:26.674 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 在 com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:61) 16:40:26.674 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] ... 1 个 16:40:26.674 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 16:40:26.674 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] 16:40:26.674 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter] * 在 https://help.gradle.org 获得更多帮助 16:40:26.674 [错误] [org.gradle.internal.buildevents.BuildResultLogger] 16:40:26.674 [错误] [org.gradle.internal.buildevents.BuildResultLogger] 在 37 秒内构建失败
我终于找到了解决方法。但是,我仍然不解为什么它依赖于 Gradle 插件版本。
我正在使用 logback-android,它以某种方式依赖于 xpp3,正如您在依赖关系图中看到的那样:
+--- com.github.tony19:logback-android-classic:1.1.1-6
| | +--- com.github.tony19:logback-android-core:1.1.1-6
| | \--- com.github.tony19:apktool-lib:1.4.4-3
| | \--- com.google.android:android:2.1_r1
| | +--- commons-logging:commons-logging:1.1.1
| | +--- org.apache.httpcomponents:httpclient:4.0.1
| | | +--- org.apache.httpcomponents:httpcore:4.0.1
| | | +--- commons-logging:commons-logging:1.1.1
| | | \--- commons-codec:commons-codec:1.3
| | +--- org.khronos:opengl-api:gl1.1-android-2.1_r1
| | +--- xerces:xmlParserAPIs:2.6.2
| | \--- xpp3:xpp3:1.1.4c
必须要说的是,我在一个 utils 模块中声明了 logback-android,然后我使用 implementation project(:'myUtilsModule')
现在我排除了组 xpp3
及其模块 xpp3
。组和模块名称 xmlpull
无效。:
// https://mvnrepository.com/artifact/com.github.tony19/logback-android-classic
implementation('com.github.tony19:logback-android-classic:1.1.1-6') {
exclude group: 'xpp3', module: 'xpp3' //in order to avoid "Multiple dex files define Lorg/xmlpull/v1/XmlPullParser;"
//exclude group: 'xmlpull', module: 'xmlpull' //This works usually on other libs to exclude xmlpull, but not on that one
}
我艰难地学会了如何阅读依赖关系图以及如何从图中排除项目 ;)
- 运行
- 依赖图中的每一行都具有以下格式
<group>:<module>:<version>
- 哪个映射到排除参数
exclude group: '<group>', module: '<module>'
或exclude module: '<module>'
更新: 使用 logback-android-1.1.1-7+ 不再需要排除。