Итак, я ПЫТАЮСЬ выпустить какое-нибудь программное обеспечение, но Proguard вызывает у меня головную боль.
Когда я пытаюсь экспортировать с помощью proguard, я получаю много предупреждений, например, «не могу найти класс, на который указывает ссылка»
Например:
[2011-08-07 17:44:37 - GAME] Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.XMLEvent
[2011-08-07 17:44:37 - GAME] Warning: there were 52 unresolved references to classes or interfaces.
[2011-08-07 17:44:37 - GAME] You may need to specify additional library jars (using '-libraryjars'),
[2011-08-07 17:44:37 - GAME] or perhaps the '-dontskipnonpubliclibraryclasses' option.
[2011-08-07 17:44:37 - GAME] java.io.IOException: Please correct the above warnings first.
[
Предупреждения, похоже, связаны с simpleframework, поэтому в моем конфигурационном файле proguard я добавил следующее:
-libraryjars pathtoprojecttolibs\simple-xml-2.4.jar
Где pathtoprojecttolibs
путь к банкам, на которые ссылается мой проект.
Это НЕ имеет значения.
Если simpleframework ссылается на javax, могу ли я сказать proguard игнорировать и это ??
Любые идеи?
Ответы:
org.simpleframework.xml.stream.StreamReader
в вашем коде имеется в видуjavax.xml.stream.events.XMLEvent
. Последний класс является частью среды выполнения Java (rt.jar
), но не частью среды выполнения Android (android.jar
), поэтому ProGuard предупреждает, что что-то может сломаться. Если вы уверены, что ваше приложение все равно работает, вы можете указатьProGuard ад?
источник
-dontwarn javax.xml.**
-libraryjars <java.home>/lib/rt.jar
устранило проблему для меня.-dontwarn javax.xml.stream.**
-dontwarn
пение графического интерфейса?В моем случае основная причина была здесь . Эти предупреждения вы можете просто пропустить:
Оригинальный ответ здесь
источник
Эта ошибка возникает из-за того, что используемые вами библиотеки зависят от других библиотек, которые на самом деле не используются, но Proguard ищет их.
Добавьте -dontwarn строки в proguard-rules.pro файл в вашем Android проекта , чтобы отключить эти предупреждения.
Вы можете найти, какие зависимости вам нужно добавить в proguard-rules.pro, в трассировке стека вашей ошибки.
источник
Вы должны включить это в свой конфиг Proguard:
источник
Мой волшебный ключ, который решил мои часы поиска: добавьте это в progruard-android.txt
источник
Хм. При чтении этого предупреждения может показаться, что библиотека, которую вы пытаетесь использовать, зависит от javax.xml.stream.events. Я не думаю, что это пространство имен вообще включено в Android. (См. Указатель пакетов ).
Попробуйте развернуть его в эмуляторе без использования proguard и посмотрите, работает ли он. Думаю, нет, если это предупреждение верно.
источник
Я думаю, что это крайний случай, но в моем случае мне пришлось полностью стереть папку сборки на моем прогарде Jenkins, который пытался работать со старым кодом, которого больше не было - на случай, если у кого-то есть такая же проблема.
источник
В моем случае я ничего не менял, и начали появляться предупреждения. Проблема заключалась в сломанных кешах Gradle. Проверьте мой другой ответ . Я согласен с этим, потому что мне потребовалось 2 часа, чтобы найти проблему:]
источник
Добавьте эту строку в свой
proguard-rules.pro
файл в каталоге скриптов gradle:где
package.class.name
это имя пакета с добавленным именем класса jar-файла.Например:
источник