gpt4 book ai didi

android - 使用 gradle 构建时出现 dexDebug 错误

转载 作者:行者123 更新时间:2023-12-03 06:12:12 25 4
gpt4 key购买 nike

我有 3 个正在构建的模块。

A(一个没有依赖的android库)
B(依赖于 A 的 android 库)
C(依赖于 B 和 A 的 android 应用程序)

首先,我只想在 C 中声明 B 并传递 A
其次,我不断收到 dex 错误:

Unknown source file : UNEXPECTED TOP-LEVEL EXCEPTION:
Unknown source file : com.android.dex.DexException: Multiple dex files define Lorg/apache/commons/collections/Buffer;
Unknown source file : at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
Unknown source file : at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
Unknown source file : at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
Unknown source file : at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
Unknown source file : at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
Unknown source file : at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:502)
Unknown source file : at com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)
Unknown source file : at com.android.dx.command.dexer.Main.run(Main.java:277)
Unknown source file : at com.android.dx.command.dexer.Main.main(Main.java:245)
Unknown source file : at com.android.dx.command.Main.main(Main.java:106)

:app:dexDebug FAILED

我提供在模块 B、C 中声明的依赖项(A 没有)

乙:
dependencies {
compile 'com.me.project:project-base:1.0.0'
compile 'org.apache.httpcomponents:httpcore:4.3'
compile 'org.apache.httpcomponents:httpmime:4.3'
compile 'commons-io:commons-io:2.4'
}

C:
dependencies {
compile 'com.android.support:appcompat-v7:+'
compile 'com.android.support:design:23.1.0'
compile 'com.android.support:recyclerview-v7:23.1.0'
compile 'com.android.support:gridlayout-v7:23.1.0'
compile ('B')
compile 'com.android.support:support-v4:23.1.0'
compile 'commons-validator:commons-validator:1.4.1'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.4'

// TODO: check how to make it transitive somehow
compile 'com.me.project:project-base:1.0.0'

// only simbols to compile time
provided 'org.apache.httpcomponents:httpcore:4.3'
provided 'org.apache.httpcomponents:httpmime:4.3'
provided 'commons-io:commons-io:2.4'
}

请帮助我如何正确配置项目并解决我的错误

谢谢!!

最佳答案

正如异常消息所暗示的,公共(public)收藏 依赖项被添加了两次。

快速浏览一下,我发现 commons-validator库依赖于 commons-collections .您必须找到 commons-collections由另一个依赖项传递添加。

可以帮助您的工具有:

打印所有编译依赖项(从项目的根目录,app 是应用程序模块的名称):./gradlew app:dependencies --configuration compile
使用依赖洞察报告:./gradlew app:dependencyInsight --configuration compile --dependency commons-collections
如果上述选项无效,那么commons-collections 类可能被打包在一个fat-jar 中。使用以下任务打印所有编译依赖项,并检查其中一个 jar 是否包含 commons-collections 类(使用 ./gradlew app:printDependencies 运行它):

task printDependencies << {
configurations.compile.each { println it.name }
}

附带说明一下,commons-validator v1.4.1 依赖于 vulnerable commons-collections 3.2.1 版本。确保您使用的是 commons-collections 3.2.2 或更高版本。

关于android - 使用 gradle 构建时出现 dexDebug 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33768582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com