【问题标题】:Excluding multiple transitive dependencies from all configurations从所有配置中排除多个传递依赖项
【发布时间】:2016-04-12 04:32:34
【问题描述】:

我在 Android Studio 中开发一个 android 项目时遇到问题。

我正在使用多个 *.jar 扩展文件作为我的项目的库。 但是,它们之间有共同的类,即具有相同类名和相同包名的类。 *.jar 扩展文件是:rt.jar 和 tools.jar。 “rt.jar”文件是从 Debian OS (x86) 的 OpenJDK6 jre 二进制文件中获得的。 “tools.jar”文件取自 Beads Library 文件,即从“Beads.z​​ip”文件中获取,“Beads.z​​ip”文件位于:http://www.beadsproject.net/。我正在 Android Studio 中开发一个新的基于 Beads 的 android 项目。顺便说一句,我需要一个适用于 Android 操作系统的 JavaSound 实现,因为 Beads 库需要一个 JavaSound 实现。因此,我想在 Android Studio 中基于 Beads 的 android 项目中使用 OpenJDK 的 javaRT,但我发现此项目库“rt.jar”和“tools.jar”中存在冗余 *.class 扩展文件的问题。

顺便说一句,我需要在“应用程序执行过程,在调试模式下”(相应的按钮被称为:运行'app',在Android Studio中)中排除多余的* .class扩展文件,或者在“ apk构建过程”,配合Gradle工具使用,即在“classes.dex”文件中创建/操作。

我在网上搜索了一下,在stackoverflow.com网站上找到了一些资料……然后,我在“defaultConfig”定义中使用了“multiDexEnabled true”来修复之前的一些问题。

所以,我知道我可以使用“configurations.compile.transitive = false”来尝试解决我的问题,但它不起作用。顺便说一句,我尝试使用:

configurations {
all*.exclude group: 'sun', module: 'sun.applet'
all*.exclude group: 'sun', module: 'sun.tools.jar'
}

,或

configurations {
all*.exclude group: 'sun', module: 'sun.applet'
}

configurations {
all*.exclude group: 'sun', module: 'sun.tools.jar'
}

,例如,但它们也没有工作。

我试过了:

dependencies {
compile files('lib/tools.jar') {
exclude group: 'sun', module: 'sun.applet'
exclude group: 'sun', module: 'sun.tools.jar'
}
}

,但它也没有用。

我不知道这些语句是否有助于在此 apk 构建过程中排除多余的 *.class 扩展 Java 文件,但我认为它们不是。

本题引用的网页链接为:
https://discuss.gradle.org/t/how-can-i-exclude-all-transitive-dependencies/6875
.

感谢您的帮助。

【问题讨论】:

    标签: android-studio gradle dependencies build.gradle


    【解决方案1】:

    从所有配置中排除的正确格式是:

    configurations {
      compile.exclude group: 'xml-apis', module: 'xmlParserAPIs'
      compile.exclude group: 'org.slf4j', module: 'slf4j-simple'
    }
    

    【讨论】:

    • 很抱歉,因为我的内部定义不起作用。它是:“配置 { compile.exclude 组:'sun',模块:'sun.applet' compile.exclude 组:'sun',模块:'sun.tools.jar'}”。不知道对不对,还是有AndroidStudio的bug……
    • 您试图排除 javaRT 组件?为什么?
    • 是的,因为它们在我的项目的库中被定义了两次。
    • 添加了哪些依赖项?
    • 我正在开发一个带有珠子库的项目,以及来自 OpenJDK 的 JavaRT jar 文件。 Beads 库需要 javasound api 才能正常运行,我从 OpenJDK JavaRT jar 文件中获取了 javasound api,以便在 AndroidStudio 的 android 项目中使用。
    猜你喜欢
    • 2010-10-07
    • 2023-04-02
    • 2013-04-27
    • 2015-04-12
    • 2018-08-19
    • 2013-04-22
    • 2018-07-06
    • 1970-01-01
    相关资源
    最近更新 更多