Предупреждения Proguard “не могут писать ресурс (Дублирование записи в zip)”

Я использую IntelliJ и запускаю Proguard в режиме отладки, но я не могу избавиться от таких предупреждений, как:

ProGuard: [MyApplication] Warning: can't write resource [META-INF/MANIFEST.MF] (Duplicate zip entry [android-support-v13.jar:META-INF/MANIFEST.MF]) 

В этом проекте имеется несколько модhive, а для 2 из них используется android-support-v13.jar . Я подумал, что это проблема, поэтому я удалил эту библиотеку из папки libs, добавил ее в качестве библиотеки проектов и добавил зависимость для обоих модhive. Это ничего не решило, предупреждение сохраняется, и я не понимаю, почему.

Я знаю, что эти предупреждения не влияют ни на что, но чистая assembly – счастливая конструкция!

Возможно, проблема «proguard.cfg». Включает ли он какие-либо «-инджары»? Если ваш проект включает в себя другой проект в качестве библиотеки, банки могут обрабатываться дважды. Не могли бы вы разместить свой «proguard.cfg»?

Выдержка из http://proguard.sourceforge.net/index.html#manual/troubleshooting.html :

Ваши входные банки содержат несколько файлов ресурсов с тем же именем. ProGuard продолжает копировать файлы ресурсов, как обычно, пропуская любые файлы с ранее использованными именами. Еще раз предупреждение может быть признаком некоторой проблемы, хотя, поэтому рекомендуется удалить дубликаты. Удобный способ сделать это – указать фильтры на входных баночках. Невозможно отключить эти предупреждения.

ОПЦИЯ 1:

Если вы не можете опубликовать свои «-injars», проверьте, include ли они «android-support-v13.jar» или библиотеку, включенную в ваш проект, которая также включает в себя «android-support-v13.jar».

Предполагая, что вы работаете с Ant внутри IntelliJ IDEA, вы не должны добавлять опции -injars, -outjars или -libraryjars; скрипт Ant уже делает это для вас.

ВАРИАНТ № 2:

Хотя предупреждения безвредны, чистая assembly – это счастливая assembly, поэтому попробуйте:

http://web.archive.org/web/20160206204259/http://www.dancartoon.com/2012/01/14/fixing-proguard-warning-cant-write-resource-meta-infmanifest-mf/

а также

https://gist.github.com/paulpv/4439012

ВАРИАНТ № 3:

Включить (!META-INF/MANIFEST.MF) после каждой команды ‘-injars’

 -injars library.jar(!META-INF/MANIFEST.MF) 

ВАРИАНТ № 4: Дублирующее определение Android Proguard

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

 -injars lib/jmdns.jar 

в файл proguard.cfg.

ВАРИАНТ № 5: Android – ошибка повторной записи zip-защиты Proguard

Если ваш конфигурационный файл Proguard включает следующую строку, удалите его:

 -injars bin/classes 

ВАРИАНТ № 6: Android obfuscate приложение, использующее proguard, поддерживает обфускацию библиотечных банок – или это так?

Я нашел еще один способ заставить библиотеки Proguard оставить библиотеку в одиночку, чтобы попросить ее сохранить имена своих пакетов, например:

-keep class javax. ** {*; } -keep class org. ** {*; } -keep class twitter4j. ** {*; }

ВАРИАНТ № 7:

Странное решение (удаление папки META-INF в папке src) на что-то похожее здесь .

Я использовал build.gradle с exclude в build.gradle , и у меня такие же проблемы с вами.

Вы можете исправить это, используя это.

 packagingOptions { pickFirst 'META-INF/services/javax.annotation.processing.Processor' pickFirst 'META-INF/DEPENDENCIES.txt' pickFirst 'META-INF/DEPENDENCIES' pickFirst 'META-INF/LICENSE.txt' pickFirst 'META-INF/LICENSE' pickFirst 'META-INF/NOTICE.txt' pickFirst 'META-INF/NOTICE' pickFirst 'META-INF/LGPL2.1' } 

Замените pickFirst с exclude .

Лучшее решение, которое я нашел, это скопировать цель -обновить с /tools/ant/build.xml в custom_rules.xml вашего проекта. Затем необходимо изменить только один блок:

       

Единственным добавленным битом является (!META-INF/MANIFEST.MF) . Это исключает все файлы манифеста, которые в любом случае не будут скопированы в окончательный APK.

Не ссылайтесь на библиотеку поддержки, включив ее банку напрямую; когда вы это делаете, система сборки не может устранить неоднозначность между несколькими версиями, и вы получаете ошибки этого типа. Включите его, указав его координаты Maven:

зависимостей {compile ‘com.android.support:support-v13:XXX’}, где XXX – это правильный номер версии, основанный на том, с каким API вы компилируете. Если вы включите эту зависимость через пользовательский интерфейс в структуре проекта> (ваш модуль)> «Зависимости»> «Кнопка»> «Зависимость от библиотеки», это поможет вам выбрать правильный номер версии.

Вам также может быть удобно включать другие зависимости через координаты Maven вместо того, чтобы спорить с их баночками; тот же пользовательский интерфейс зависимостей библиотеки имеет функцию поиска, которая поможет вам найти библиотеки.

обязательно удалите эту библиотеку из библиотек или любой другой папки, в которой она была

add -dontwarn to proguard.cfg игнорировать предупреждения

  • Как предоставить файлы данных для тестов на андроид
  • Android: установите все PendingIntents с помощью AlarmManager
  • Изменение цвета подсказки EditText при использовании TextInputLayout
  • EditText вызывает утечку памяти
  • Ошибка java Lang UnsupportedClassVersion в Xamarin Studio
  • форма андроида с нижним ходом
  • IllegalStateException: не удается выполнить это действие после onSaveInstanceState с помощью ViewPager
  • Android-L CardView Visual Touch Обратная связь
  • Радиус угла обзора CardView
  • Закрытие базы данных в ContentProvider
  • Как обрабатывать onContextItemSelected в операции с несколькими fragmentами?
  • Interesting Posts

    Не подключен провод в ноутбуке Dell Vostro 1510?

    Какова лучшая страtagsя для модульных приложений, управляемых базами данных?

    Устройство USB, не распознанное в cygwin

    Любое программное обеспечение, чтобы сделать поминутную резервную копию?

    чтение двух целых чисел в одной строке с использованием C #

    Сделать приложение-волшебник на Android-устройстве

    Можно ли загружать Windows 8.1 без собственного загрузчика?

    Cloned XP не будет загружаться должным образом – застрял перед выбором экрана входа / выбора пользователя

    В чем разница между GDDR3 и DDR3?

    различия между использованием wmode = “transparent”, “opaque” или “window” для встроенного объекта на веб-странице

    Проблема с сохраненными паролями в Chrome

    Эффективно вычислить пересечение двух наборов в Java?

    Как создать тень для кнопки

    INotifyPropertyChanged WPF

    Как настроить имена параметров при связывании объектов командной строки spring mvc

    Давайте будем гением компьютера.