54

主に難読化の理由で Proguard を使用したいと考えています。

私の問題は、Twitter4J と 2 つの標識ライブラリの 3 つのライブラリがあることです。署名付き APK を作成しようとしたときに、これらのライブラリが原因でエラーが発生しました。これを乗り越えるために、proguard.configファイルに以下を入れました...

-dontwarn org.apache.commons.codec.binary.** 
-dontwarn org.slf4j.** 
-dontwarn com.sun.syndication.io.**
-dontwarn com.sun.syndication.feed.synd.*   

これでコンソールのエラーは解消されましたが、署名済みの APK を携帯電話にロードすると、すぐにクラッシュしました。DDMS は、これは Twitter4J に見つからないクラスが原因であると述べました。

上記を取り除く"dontwarns"ことは助けにはなりませんでした。も追加しませんでしたdontshrink dontoptimise

Proguard がライブラリを完全に無視することを望みます (とにかくオープン ソースであるため)。これは可能ですか?

4

3 に答える 3

70

これを試して:

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

@CaspNZからのCf投稿: 外部jarを使用したAndroid Proguard

于 2011-10-17T06:23:56.397 に答える
16

proguard.cfg に次の行を追加して、パッケージ (およびサブパッケージ) 内のすべてのクラスを除外できるはずです。

-keep class org.apache.commons.codec.binary.**
-keep interface org.apache.commons.codec.binary.**
-keep enum org.apache.commons.codec.binary.**
-keep class org.slf4j.**
-keep interface org.slf4j.**
-keep enum org.slf4j.**
-keep class com.sun.syndication.io.**
-keep interface com.sun.syndication.io.**
-keep enum com.sun.syndication.io.**
-keep class com.sun.syndication.feed.synd.**
-keep interface com.sun.syndication.feed.synd.**
-keep enum com.sun.syndication.feed.synd.**
于 2011-10-11T04:49:39.313 に答える