0

Android プロジェクトでプロガード コードの難読化を有効にしようとしています。何年にもわたって多くの質問が寄せられていますが、スレッドの多くはかなり古く、それらが私にとってどの程度関連しているかを判断するのは困難です.

Eclipse にデフォルトのプロガード構成ファイルを生成させることができなかったので、1 つをつなぎ合わせようとしましたが、それは苦痛です (それから得たビルドはほとんどすぐにクラッシュし、使用したサードパーティ ライブラリのいくつかの要素を覆い隠しているように見えます)。アプリで)。生成されたファイルが今では完璧かもしれないことは理解できますが、プロジェクト ライブラリを適切に処理するには、少なくともクラックが必要なようです。

プロガードを有効にするために私が取った手順は次のとおりです。

1 Eclipse および Android SDK が完全に最新であることを確認します。

2 project.properties を編集し、コメントを外します

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

3 pro Guard-project.txt が存在しないため、すぐにビルドが失敗します。(ここで生成したい場所です)

4 proguard-project.txt に独自の pro Guard.config ファイルを作成しました (以下に内容を示します)

-injars bin/classes -outjars bin/classes-processed.jar -libraryjars libs/FlurryAgent.jar:libs/GoogleAdMobAdsSdk-4.1.1.jar -libraryjars libs/commons-codec-1.4.jar -libraryjars libs/commons-io- 2.1.jar -libraryjars libs/commons-logging-1.1.1.jar -libraryjars libs/httpclient-4.1.2.jar -libraryjars libs/httpclient-cache-4.1.2.jar -libraryjars libs/httpcore-4.1.3. jar -libraryjars libs/httpmime-4.1.2.jar -libraryjars libs/mapquest-android-sdk-1.0.3.jar -libraryjars libs/oranjestad-notifications-1.0.jar

-dontwarn org.apache.** -dontwarn org.ietf.*

-keepnames org.apache.**

-dontpreverify -repackageclasses '' -allowaccessmodification -optimizations !code/simplification/arithmetic -keepattributes注釈

-keep public クラス * android.app.Activity を拡張 -keep public クラス * android.app.Application を拡張 -keep public クラス * android.app.Service を拡張 -keep public クラス * android.content.BroadcastReceiver を拡張 -keep public クラス * 拡張android.content.ContentProvider

-keep public class * extends android.view.View { public (android.content.Context); public (android.content.Context, android.util.AttributeSet); public (android.content.Context, android.util.AttributeSet, int); public void set*(...); }

-keepclasseswithmembers class * { public (android.content.Context, android.util.AttributeSet); }

-keepclasseswithmembers class * { public (android.content.Context, android.util.AttributeSet, int); }

-keepclassmembers class * extends android.content.Context { public void *(android.view.View); public void *(android.view.MenuItem); }

-keepclassmembers クラス * android.os.Parcelable を実装 { static android.os.Parcelable$Creator CREATOR; }

-keepclassmembers クラス * .R$ { public static ; }

5 この時点で、プロジェクトはビルドされますが、ロギングに関する一部のクラス キャスト例外が原因で失敗します。これでステップ 3 に戻ります。Eclipse ライブラリの依存関係に基づいて適切な proguard-project.txt が生成されていればよかったのにと思います。明らかに、私が作成した on は正しくありません。

4

2 に答える 2

1

SDK を更新したら、プロジェクト自体も必ず更新する必要があります。

android update project --path MyAndroidProjectDirectory

最近の Android SDK では、これによりproguard-project.txt.

于 2012-08-21T23:16:09.443 に答える
0

セットアップ全般に問題がない限り、新しいAndroidプロジェクトを作成し、proguard構成ファイルも書き留めます。したがって、ダミープロジェクトを設定し、そのフォルダを確認するだけです。そこにあるはずです。それを現在のプロジェクトにコピーして戻し、必要に応じて調整します。

于 2012-08-20T22:07:12.007 に答える