Android Proguard Дубликат Определение - PullRequest
10 голосов
/ 10 января 2012

Я пытаюсь добавить стороннюю библиотеку (JmDNS) в свой проект Android.

Я создал папку 'libs' в каталоге базового проекта и удалил файл jar в каталог.

Когда я пытаюсь построить проект с использованием Ant (выпуск муравья), я получаю уведомления «дубликата определения» для каждого класса в файле Jar JMDNS.

....
[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 жаловаться на дубликаты определений?

Ответы [ 2 ]

12 голосов
/ 10 января 2012

Исправлено это путем перемещения сторонних библиотек в другой каталог, в моем случае «lib».Затем добавили

-injars lib/jmdns.jar 

в файл proguard.cfg.

Если сторонние lbs включены в папку 'libs', то они обрабатываются дважды.

1 голос
/ 08 октября 2015

В текущей версии progaurd нет необходимости указывать раны.Это обрабатывается по умолчанию.Это может быть связано со следующими причинами -

1) дубликатов jar-файлов в некоторых библиотеках, на которые есть ссылки.

Решение - Удалите его из приложения и разрешите использовать его в качестве справочной библиотеки

2) Может быть из-за разных версий gradle между файлом gradle вашего приложения и файлом gradle указанной библиотеки.Сделайте то же самое.

Решение - отредактируйте файл Gradle в одном из файлов Gradle указанной библиотеки / Project.Смотрите classpath одинаков для обоих проектов.

dependencies { classpath 'com.android.tools.build:gradle:1.3.0' }

У меня были обе эти проблемы, исправил их, и это сработало.

...