【发布时间】: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.zip”文件中获取,“Beads.zip”文件位于: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