无法正常编译错误Compilation failed to complete

421 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

发现了一个不错的库可以实时查看和修改布局。uetool 于是就加入到了依赖,谁想编译时却出现了错误。 以下是部分错误片段

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
	at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
	Caused by: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: 
	at com.android.builder.dexing.D8DexArchiveMerger.getExceptionToRethrow(D8DexArchiveMerger.java:124)
	at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:109)
	at com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call(DexMergerTransformCallable.java:101)
	at com.android.build.gradle.internal.transforms.ExternalLibsMergerTransform.transform(ExternalLibsMergerTransform.kt:123)
	at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:221)
	at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:217)
	at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
	... 47 more
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete
	at com.android.tools.r8.utils.ExceptionUtils.withCompilationHandler(ExceptionUtils.java:76)
	at com.android.tools.r8.utils.ExceptionUtils.withD8CompilationHandler(ExceptionUtils.java:45)
	at com.android.tools.r8.D8.run(D8.java:67)
	at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:107)
	... 52 more
Caused by: com.android.tools.r8.utils.AbortException
	at com.android.tools.r8.utils.Reporter.failIfPendingErrors(Reporter.java:77)
	at com.android.tools.r8.utils.Reporter.fatalError(Reporter.java:58)
	at com.android.tools.r8.utils.ExceptionUtils.withCompilationHandler(ExceptionUtils.java:67)
	... 55 more

开始就想根据这些错误来找出问题。但经过了一些努力似乎没有结果。 于是注释掉新引入的库。clean后重新编译,可以正常编译了。 难道这库有问题。不应该啊,那么多人用。如果有这种问题早就发现了。 于是我想会不会是有些依赖库冲突啊。于是执行命令 ./gradlew dependencies app:dependencies 查看依赖关系,果然,我原来的support库都用的26.1.0,而这个库引用了27.1.1 解决方法,引入新库时排除support库的引用

debugImplementation ('me.ele:uetool:1.0.15') {
        exclude module: 'appcompat-v7'
        exclude module: 'recyclerview-v7'
    }

ok,可以正常编译了。

更新: 还有一个错误的地方,uetool文档中的配置是gradle3.0之前的,如下:

debugCompile 'me.ele:uetool:1.0.15'
releaseCompile 'me.ele:uetool-no-op:1.0.15'

3.0后关键字已经修改,引入的时候我不小心写错了

debugImplementation 'me.ele:uetool:1.0.15'
implementation 'me.ele:uetool-no-op:1.0.15'

这里debugImplementation和implementation应该是效果一样,所以冲突了 正确的应该是

debugImplementation 'me.ele:uetool:1.0.15'
    releaseImplementation 'me.ele:uetool-no-op:1.0.15'