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

无法在 Gradle 中排除重复的库

宗政招
2023-03-14

我正在尝试将库连接到我在Gradle的项目:

compile 'com.balancedpayments:balancedpayments:1.4'

当我单击“立即同步”时,项目正在生成,没有错误,但当我运行项目时,IDE显示错误:

执行任务:[: app: assembleDebug]

按需配置是一个孵化功能。: app: preBuild: app: compileDebugNdk UP-TO-DATE: app: preDebugBuild: app: check DebugManifest: app: preReleaseBuild: app: preareComAndroidSupportAppcompatV72103Library UP-TO-DATE: app: preareComAndroidSupport portV42103Library UP-TO-DATE: app: preareDebugDependents: app: compileDebugAidl UP-TO-DATE: app: compileDebugRenderscript UP-TO-DATE: app: GenerateDebugBuildConfig UP-TO-DATE: app: GenerateDebugAsset UP-TO-DATE: app: mergeDebugAsset UP-TO-DATE: app: GenerateDebugResources UP-TO-DATE: app: mergeDebugResources UP-TO-DATE:

不成功的

失败:构建失败,但有一个异常。

>

  • 出了什么问题:任务': app: dexDebug'执行失败。

    com . Android . ide . common . internal . logged Error EXCEPTION:无法运行命令:C:\ Users \ Zen _ 75 \ AppData \ Local \ Android \ SDK \ build-tools \ 21 . 1 . 2 \ dx . bat-dex-no-optimize-Output C:\ skip \ test payment \ app \ build \ intermediates \ dex \ debug-input-list = C:\ skip \ test payment \ app \ build \ intermediates \ tmp \ dex \ debug \ input list . txt错误代码:2输出:意外的顶级异常at com . Android . dx . merge . dex merger . readsortabletypes(dex merger . Java:596)< br > at com . Android . dx . merge . dex merger . getsortedtypes(dex merger . Java:554)< br > at com . Android . dx . merge . dex merge . merge classdefs(dex merger . Java:535)< br > at com . Android . dx . merge . dex . merge . merge dex(dex merge . Java:171)at com . Android . dx . merge . merge

    尝试:使用--stacktrac选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。

    建筑失败

    我发现了问题的描述——这是一个冲突的库。要解决这个问题,建议消除冲突的库。为此,我这样做:

    configurations {
        all*.exclude module: 'httpclient'
        all*.exclude module: 'commons-logging'
    }
    

    警告消失,但错误仍然存在。你能告诉我如何消除这些库吗?

    谢谢

  • 共有2个答案

    鲁洋
    2023-03-14

    当我在api 23中使用HttpClient时也遇到了类似的问题。我导入org.apache.http.legacy.jar问题出现。我使用useLibrary'org.apache.http.legacy'解决它。

    白烨煜
    2023-03-14

    " com . Android . dex . dex异常:多个dex文件定义"

    当. class文件或jarfile内容的两个或多个副本无意中包含到项目中时,会导致这个令人烦恼的错误。(Gradle和/或Android Studio的新手经常被这个阻止)。

    >

  • 尝试将其排除在应用的顶级build.gradle中-

    android {
        ...
        packagingOptions {
            exclude('org/apache/commons/codec/*')
        }
    }
    

    检查库是否多次包含为依赖项:查看项目的所有生成。gradle文件以确保它只包含一次。

     compile 'org.apache.commons.code' ...
    

    库或子项目还可能包含复制库或类文件的副本:您可以将其排除在库编译到您的应用程序中的位置,在build.gradle文件中查找其编译规范-

    dependencies {
        ...
        compile('com.googlecode.json-simple:json-simple:1.1.1') {
            exclude group: 'org.hamcrest'
        }
    }
    

    如果这不起作用,请尝试将",模块:'库'"附加到排除行,即-

        compile('com.googlecode.json-simple:json-simple:1.1.1') {
            exclude group: 'org.hamcrest', module: 'library'
        }
    

    要准确确定哪个库或子项目包含重复的类文件,请尝试使用--debug运行gradle,并查看控制台输出,以跟踪包含的来源-

    % gradle --debug release 2>&1 | less
    

  •  类似资料:
    • gradle:如何排除重复的资源文件?例如。, META-INF/foo。在.././.下的xml/src/main/resources与src/main/resources/META-INF/foo同名。xml。 还尝试了: foo.xml文件都被排除在外。

    • 问题内容: 我的复制任务设置如下: 而且我收到以下错误: 我觉得这只是一个语法问题,有什么提示吗? 问题答案: 按组排除: 按模块排除: 按文件名排除: 排除文件: 您可以按组和模块排除,但需要进入这样的配置排除。 然后它将限制复制之前的配置。 并记住确保该目录存在 也许不是排除所有其他文件而是添加jar?

    • 你好,我发布这条小消息,知道是否有可能删除 型号如下: 创建日志数据 选择所有日志数据: [SQL-QUERY]: 01-不起作用,因为总是有重复的uuid 我希望所有类型为progress 根据日期按分钟组织进度数据 [SQL-QUERY]: 02-宇宙错误! 语法错误,靠近“DISTINCT”的语法不正确。 我想删除重复的uuid,然后按日期对唯一的uuid进行分组

    • 当我尝试运行我的应用程序时,我总是遇到这样的错误: com.android.build.api.transform.transformException:com.android.builder.packaging.duplicateFileException:APK log4j2.xml中复制了重复的文件 文件4:/users/matti/.gradle/caches/modules-2/file

    • 我有4个错误消息时,我建立我的应用程序;当我添加了一个新的依赖项(de.westnordost:osmapi-注释:1.3)时,它们就出现了。这些消息都是相似的: 但它们都以相同的4个错误结束。那么,我需要使用的正确语法/组/模块是什么?