Android Proguard重复定义

前端之家收集整理的这篇文章主要介绍了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’文件夹中,那么它们被处理两次.

原文链接:https://www.f2er.com/android/312749.html

猜你在找的Android相关文章