Android Proguard 重复定义

标签 android proguard

我正在尝试将第 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 会提示重复的定义?

最佳答案

通过将第 3 方库移动到另一个目录(在我的例子中为“lib”)来修复此问题。然后添加

-injars lib/jmdns.jar 

到 proguard.cfg 文件。

如果第 3 方 lbs 包含在“libs”文件夹中,那么它们将被处理两次。

关于Android Proguard 重复定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8805704/

相关文章:

android - RxJava 2 - 观察列表中的添加和删除

Android 圆形渐变 Alpha mask

java - 在retrofit中制作动态URL

java - 如何设置按钮间距

android - Proguard 和 Scoreloop

android - ADT R22 - Proguard - 找不到引用的类

android - 启用 ProGuard 时改造 2 不发送数据

android - 我们可以为Google Play中的不同组提供同一应用程序的多个版本吗?

android - 在Android上测试发行版应用,测试用的APK不是 `proguarded`

android - Cordova 和proguard : Camera Plugin NPE on takePicture