私のプロジェクトではandroid-support-library-v7を使用していますが、私はproguradを使用してコードを最小限に抑え、難読化したいと思います。 問題は、私はProGuardのを使用している場合、私はこのようなエラーを取得していることである:アンドロイドサポートライブラリの推奨されるプロゴア設定は何ですか?
FATAL EXCEPTION: main java.lang.RuntimeException: Unable to start activity ComponentInfo{org.example.project/org.example.project.ActivityMain}: android.view.InflateException: Binary XML file line #12: Error inflating class android.support.v7.preference.PreferenceCategory
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
at android.app.ActivityThread.access$700(ActivityThread.java:140)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4921)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
at dalvik.system.NativeStart.main(Native Method) Caused by: android.view.InflateException: Binary XML file line #12: Error inflating class android.support.v7.preference.PreferenceCategory
at android.support.v7.preference.g.a(Unknown Source)
at android.support.v7.preference.g.a(Unknown Source)
at android.support.v7.preference.g.a(Unknown Source)
at android.support.v7.preference.g.a(Unknown Source)
at android.support.v7.preference.g.a(Unknown Source)
at android.support.v7.preference.h.a(Unknown Source)
at android.support.v7.preference.h.b(Unknown Source)
at org.exampple.project.ActivityMain.onCreate(Unknown Source)
at android.app.Activity.performCreate(Activity.java:5206)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074)
... 11 more Caused by: java.lang.NoSuchMethodException: <init> [class android.content.Context, interface android.util.AttributeSet]
at java.lang.Class.getConstructorOrMethod(Class.java:460)
at java.lang.Class.getConstructor(Class.java:431)
... 22 more
PreferenceCategoryは私のあるpreferences.xmlファイルで使用されていると私はそれが反射を介してアクセスされると思います。このメソッド(またはクラス)が縮小時にコード内で参照されていない場合は、おそらくProguardによってこのメソッドが削除されます。たとえそうでなくても、それは確かにその名前を難読化する。 通常の方法でGoogleには、この件に関するドキュメントはまったくありません。
したがって、良好な縮小と良好な難読化を達成するための最適な設定は何ですか。 は、スタックオーバーフロー上のいくつかの同様の質問がありますが、彼らはに煮詰める:クリアリーが縮小して難読化の目的に反し
-keep class android.support.v7.** { *; }
。
設定をランダムに推測しようとすると、試行錯誤してみると非常に時間がかかります。
ありがとうございます。私はgradleを使用していません。したがって、私にとってはそれほど簡単ではありません。 Upvoted。 –
@ user6694745 - サポートライブラリをアップグレードするたびに、引き上げるすべてのAARのすべてのproguard.txtファイルからルールを手動で抽出する必要があります。 Gradleを使用することを強く推奨します。 – ianhanniballake