18

アプリケーションを ProGuard でビルドすると、次のメッセージで失敗します。Android SDK によって生成されたデフォルトの proguard.cfg といくつかの -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) に更新しましたが、同じ警告が表示されます。

4

8 に答える 8

25

この行を proguard-project.txt に追加します

-dontwarn org.xmlpull.v1.**

そしてこの行をproject.propertiesに

proguard.config=proguard-project.txt
于 2014-02-11T15:31:10.717 に答える
13

私は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
于 2015-10-22T17:22:46.383 に答える
2

あなたのjarパッケージにはXmlPullParserクラスが含まれていると思います.android.jarにもこれが含まれています。したがってorg.xmlpull.*、jar パッケージ内のクラスを削除して、再度ビルドすることができます。

于 2012-05-28T13:09:05.603 に答える
2

Android用のEclipseを介して実行されるproguardの解決策はまだありませんが、コマンドラインから手動で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がどのように android API jar からフィルタリングされるかに注意してください。

XmlPullParserjust still に関連する警告について心配する必要はありません。最初にエラーやその他の警告を修正し、必要に応じ-ignorewarningsproguard.cfg.

于 2011-06-14T20:05:09.363 に答える
1

提供された部分的なログによると、Android ランタイム クラス org.xmlpull.v1.XmlPullParser がプログラム コードに含まれています。ライブラリ jar android.jar に既に存在するため、 bin/classesまたはlibの一部の jar に存在しないことを確認する必要があります。

さらに、4247 個の重複したクラス定義があります。これはおそらく、あなたが言及したように「some -libraryjars」を指定したためです。これらのライブラリ jar は、ビルド スクリプトによって既に自動的に含まれていると思われるため、再度指定しないでください。

于 2011-03-18T18:01:41.063 に答える