Ошибка Android ProGuard с org.xmlpull.v1.XmlPullParser - PullRequest
15 голосов
/ 17 марта 2011

Когда мое приложение создается с помощью ProGuard, оно выдает следующее сообщение.Я использую по умолчанию proguard.cfg, сгенерированный Android SDK с некоторыми -libraryjars.Что я могу сделать для этого?

[2011-03-17 09:27:04 - MyProject] Proguard returned with error code 1. See console
[2011-03-17 09:27:04 - MyProject] Note: there were 4247 duplicate class definitions.
[2011-03-17 09:27:04 - MyProject] Warning: library class android.content.res.XmlResourceParser extends or implements program class org.xmlpull.v1.XmlPullParser
[2011-03-17 09:27:04 - MyProject] Warning: library class android.content.Intent depends on program class org.xmlpull.v1.XmlPullParser
[2011-03-17 09:27:04 - MyProject] Warning: library class android.graphics.drawable.AnimationDrawable depends on program class org.xmlpull.v1.XmlPullParser
[2011-03-17 09:27:04 - MyProject] Warning: library class android.graphics.drawable.BitmapDrawable depends on program class org.xmlpull.v1.XmlPullParser
[2011-03-17 09:27:04 - MyProject] Warning: library class android.graphics.drawable.Drawable depends on program class org.xmlpull.v1.XmlPullParser
[2011-03-17 09:27:04 - MyProject] Warning: library class android.graphics.drawable.Drawable depends on program class org.xmlpull.v1.XmlPullParser
[2011-03-17 09:27:04 - MyProject] Warning: library class android.graphics.drawable.Drawable depends on program class org.xmlpull.v1.XmlPullParser
[2011-03-17 09:27:04 - MyProject] Warning: library class android.view.LayoutInflater depends on program class org.xmlpull.v1.XmlPullParser
[2011-03-17 09:27:04 - MyProject] Warning: library class android.view.LayoutInflater depends on program class org.xmlpull.v1.XmlPullParser
[2011-03-17 09:27:04 - MyProject]       You should check if you need to specify additional program jars.
[2011-03-17 09:27:04 - MyProject] Warning: there were 9 instances of library classes depending on program classes.
[2011-03-17 09:27:04 - MyProject]          You must avoid such dependencies, since the program classes will
[2011-03-17 09:27:04 - MyProject]          be processed, while the library classes will remain unchanged.
[2011-03-17 09:27:04 - MyProject] java.io.IOException: Please correct the above warnings first.
[2011-03-17 09:27:04 - MyProject]   at proguard.Initializer.execute(Initializer.java:321)
[2011-03-17 09:27:04 - MyProject]   at proguard.ProGuard.initialize(ProGuard.java:211)
[2011-03-17 09:27:04 - MyProject]   at proguard.ProGuard.execute(ProGuard.java:86)
[2011-03-17 09:27:04 - MyProject]   at proguard.ProGuard.main(ProGuard.java:492)

Очевидно, org.xmlpull.v1.XmlPullParser не является классом программы.Я обновил ProGuard до последней версии (4.6), но получил те же предупреждения.

Ответы [ 8 ]

23 голосов
/ 11 февраля 2014

добавить эту строку в proguard-project.txt

-dontwarn org.xmlpull.v1.**

и эта строка для project.properties

proguard.config=proguard-project.txt
9 голосов
/ 22 октября 2015

Я решил это, используя следующие настройки в файле proguard:

-dontwarn org.kobjects.**
-dontwarn org.ksoap2.**
-dontwarn org.kxml2.**
-dontwarn org.xmlpull.v1.**

-keep class org.kobjects.** { *; }
-keep class org.ksoap2.** { *; }
-keep class org.kxml2.** { *; }
-keep class org.xmlpull.** { *; }

-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontoptimize
-dontpreverify
2 голосов
/ 28 мая 2012

Я думаю, что ваш пакет jar включает XmlPullParser class, и android.jar также включает это. Таким образом, вы можете удалить org.xmlpull.* классы из пакета jar и собрать заново.

2 голосов
/ 15 июня 2011

У меня пока нет решения для запуска proguard через eclipse для android, но если вы запускаете proguard вручную из командной строки, вы можете добавить следующее в proguard.cfg:

-basedirectory /home/pjv/workspace/collectionista-repo/collectionista-main

-injars /tmp/android_4500371803543847111.jar
-injars libs/joda-time-1.6.jar(!META-INF/MANIFEST.MF)
-injars libs/FlurryAgent.jar(!META-INF/MANIFEST.MF)
-injars libs/veecheck-2.0.jar(!META-INF/MANIFEST.MF)
-injars libs/commons-lang-2.4.jar(!META-INF/MANIFEST.MF,!META-INF/NOTICE.txt,!META-INF/LICENSE.txt)
-injars libs/OIAbout-lib-temporary.jar(!META-INF/MANIFEST.MF)
-injars libs/libGoogleAnalytics.jar(!META-INF/MANIFEST.MF)
-injars libs/xstream-1.3.1.jar(!META-INF/MANIFEST.MF)
-injars libs/ZQL_custom.jar(!META-INF/MANIFEST.MF)
-injars libs/xpp3_min-1.1.4c.jar(!META-INF/MANIFEST.MF)
-injars libs/GoogleAdMobAdsSdk-4.1.0.jar(!META-INF/MANIFEST.MF)
-injars libs/bugsense-trace.jar(!META-INF/MANIFEST.MF)
-outjars /tmp/android_1348923171424559204.jar

-libraryjars /opt/android-sdk/android-sdk-linux_x86-1.6_r1/platforms/android-12/android.jar(!org/xmlpull/v1/XmlPullParser.class,!org/xmlpull/v1/XmlPullParserException.class)

Обратите внимание, как XmlPullParser.class фильтруется из jar API Android.

Пока не беспокойтесь о предупреждениях, связанных с XmlPullParser. Сначала исправьте ошибки и другие предупреждения, и, если необходимо, используйте -ignorewarnings в вашем proguard.cfg.

1 голос
/ 18 марта 2011

Согласно предоставленному вами частичному журналу, класс выполнения Android org.xmlpull.v1.XmlPullParser оказался в коде вашей программы. Вы должны убедиться, что он отсутствует в bin / classes или в каком-либо jar-файле в lib , поскольку он уже присутствует в библиотеке jar android.jar.

Кроме того, у вас есть 4247 повторяющихся определений классов. Это, вероятно, связано с указанием некоторых -libraryjars, как вы упоминаете. Я предполагаю, что эти библиотечные файлы уже автоматически включены в скрипт сборки, поэтому вам не нужно указывать их снова.

0 голосов
/ 18 декабря 2018

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

implementation 'com.android.support.test:runner:1.0.2' //wrong!!

сделать:

androidTestImplementation 'com.android.support.test:runner:1.0.2' //right (:
0 голосов
/ 08 октября 2018

Зависимость уже существует в вашей папке,

исключить, как показано ниже:

dependencies {
  configurations {
      all*.exclude group: 'xmlpull', module: 'xmlpull'

  }
}
0 голосов
/ 25 мая 2017

для меня я мог бы решить эту проблему, удалив мой предыдущий измененный build.gradle

Я удалил:

     minifyEnabled true

     shrinkResources true

и вернулся к исходной настройке

minifyEnabled false
...