Android Proguard重复定义

我正在尝试在我的 Android项目中添加第三方库(JmDNS).

我在基础项目目录下创建了一个文件夹’libs’,并将jar文件放在目录中.

当我尝试使用Ant(ant release)构建他的项目时,我收到一个’重复的定义’通知,看起来是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”)来修复此问题.然后补充
-injars lib/jmdns.jar

到proguard.cfg文件.

如果第三方lbs被包含在’libs’文件夹中,那么它们被处理两次.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...