【发布时间】:2012-02-07 00:11:38
【问题描述】:
我正在尝试将第 3 方库 (JmDNS) 添加到我的 Android 项目中。
我在基础项目目录下创建了一个文件夹“libs”,并将 jar 文件放在该目录中。
当我尝试使用 Ant(ant 发行版)构建他的项目时,我收到一条关于 JmDNS jar 文件中每个类的“重复定义”通知。
....
[proguard] Note: duplicate definition of library class [javax.jmdns.impl.tasks.state.Canceler]
[proguard] Note: duplicate definition of library class [javax.jmdns.impl.tasks.state.DNSStateTask]
[proguard] Note: duplicate definition of library class [javax.jmdns.impl.tasks.state.Prober]
[proguard] Note: duplicate definition of library class [javax.jmdns.impl.tasks.state.Renewer]
[proguard] Note: duplicate definition of library class [javax.jmdns.impl.tasks.state.package-info]
[proguard] Note: duplicate definition of library class [javax.jmdns.package-info]
[proguard] Note: there were 357 duplicate class definitions.
构建也失败并出现以下错误:
BUILD FAILED
/path/Tools/ant-android-scala/build-scala.xml:183: Can't write [/path/bin/projectname-debug-shrinked.jar] (Can't read [/path/projectname/libs/jmdns.jar(;;;;!META-INF/MANIFEST.MF,!library.properties)] (Duplicate zip entry [jmdns.jar:javax/jmdns/JmDNS$Delegate.class]))
我已确保 jar 文件只包含一次,并且没有其他方法可以在项目的任何位置包含重复的源文件。
为什么 Proguard 会抱怨重复定义?
【问题讨论】:
-
一个清理项目设法为我修复它(在尝试了一堆建议的答案之后)似乎一个旧版本的 lib 被保存在构建文件夹或其他东西中