合并dex归档文件时出现错误。

3
我正在使用Kotlin和Android Studio构建一个小型的Android应用程序。一切都运作良好,但突然间(至少在我看来是这样),我卡在了这个问题上。
Error:Execution failed for task :bahndb:transformDexArchiveWithExternalLibsDexMergerForDebugAndroidTest'.
> com.android.builder.dexing.DexArchiveMergerException: 
Error while merging dex archives: 
C:\Users\Dieter\AndroidStudioProjects\zuegliwidget\bahndb\build\intermediates\transforms\dexBuilder\androidTest\debug\13.jar,

直到运行 Instrumented Test 时出现了 47.jar 的问题。本地测试都正常工作。即使之前的检出已经工作过,也出现了这种情况(更新?我已经两次重新安装了 Android Studio),这很奇怪。

我已经阅读了这个主题上的所有消息,但没有帮助:

  • 使用清洁构建(每次都这样做)
  • 无效缓存(反复尝试)
  • 添加 multiDex
  • 尝试不同的 Kotlin 插件
  • 卸载 3.1 Canary 5,安装稳定版,重新安装 canary 5
  • 逐一取消/注释依赖项(这之前已经起作用了)
  • 运行 Lint,但失败了

应用程序有 2 个子模块,bahndb 和 http。以下是 gradle 文件,如果有关系的话。

https://github.com/dmenne/zuegliwidget/blob/master/build.gradle

https://github.com/dmenne/zuegliwidget/blob/master/app/build.gradle

https://github.com/dmenne/zuegliwidget/blob/master/bahndb/build.gradle << 最有可能有问题的地方

https://github.com/dmenne/zuegliwidget/blob/master/http/build.gradle

有没有系统的方法来定位问题的源头?

2
查看Gradle控制台的完整输出,看看是否有Java堆栈跟踪,其中包含有关出现问题的详细信息。应该会有一个。 - CommonsWare
感谢。发现:由 com.android.tools.r8.errors.CompilationError 引起:程序类型已存在:org.xmlpull.v1.XmlPullParserFactory。这必须是一个传递性的包含,而我还没有找出排除它的语法。 - Dieter Menne
3
好的,那个类是Android SDK的一部分。你正在使用的某个第三方库并不是专门为Android设计的,并且将该类的一个副本嵌入其中,或者通过依赖项引用了该类。我猜测这可能是org.simpleframework:simple-xml库。 - CommonsWare
1个回答

2

感谢 @CommonsWare 的评论,我发现我有

implementation ('com.squareup.retrofit2:converter-simplexml:2.3.0'){
    exclude group: 'xpp3', module: 'xpp3'
    exclude group: 'stax', module: 'stax-api'
    exclude group: 'stax', module: 'stax'
}

在一个子模块中,但是忘记了在另一个子模块中排除部分。

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