主に難読化のためにProguardを使用したい。
私の問題は、3つのライブラリ、Twitter4Jと2つの標識ライブラリがあることです。これらのライブラリは、署名済み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がライブラリを完全に無視するようにしたい(とにかくオープンソースであるため)。これは可能ですか?
これを試して:
-keep class javax.** { *; }
-keep class org.** { *; }
-keep class Twitter4j.** { *; }
@CaspNZからのCf投稿: 外部jarを使用したAndroid Proguard
パッケージ(およびサブパッケージ)内のすべてのクラスを除外するには、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.**
プロガードルールを追加した後、プロジェクトをGradleファイルと同期する必要があります。そうしないと、プロジェクトが機能しない場合があります。