2016-04-06 16 views
0

私はリリースアプリケーションにProguardを適用しようとしていますが、これまでのところエラーが発生しています。デバッグは完璧な作品を造った:私はすでに私のproguard-rules.proファイルに以下のルールを追加したProguard:リリースビルド時のAssertionError

04-06 20:25:17.689 544-544/com.myapp E/AndroidRuntime: FATAL EXCEPTION: main 
                 Process: com.myapp, PID: 544 
                 java.lang.AssertionError 
                  at com.google.b.b.a.r.<init>(Unknown Source) 
                  at com.google.b.b.a.q$19.a(Unknown Source) 
                  at com.google.b.f.a(Unknown Source) 
                  at com.google.b.b.a.k.a(Unknown Source) 
                  at com.google.b.b.a.k.a(Unknown Source) 
                  at com.google.b.b.a.k$1.<init>(Unknown Source) 
                  at com.google.b.b.a.k.a(Unknown Source) 
                  at com.google.b.b.a.k.a(Unknown Source) 
                  at com.google.b.b.a.k.a(Unknown Source) 
                  at com.google.b.f.a(Unknown Source) 
                  at com.google.b.b.a.b.a(Unknown Source) 
                  at com.google.b.f.a(Unknown Source) 
                  at com.google.b.b.a.k.a(Unknown Source) 
                  at com.google.b.b.a.k.a(Unknown Source) 
                  at com.google.b.b.a.k$1.<init>(Unknown Source) 
                  at com.google.b.b.a.k.a(Unknown Source) 
                  at com.google.b.b.a.k.a(Unknown Source) 
                  at com.google.b.b.a.k.a(Unknown Source) 
                  at com.google.b.f.a(Unknown Source) 
                  at com.google.b.f.a(Unknown Source) 
                  at com.google.b.f.a(Unknown Source) 
                  at com.google.b.f.a(Unknown Source) 
                  at com.google.b.f.a(Unknown Source) 
                  at com.a.a.a.a(Unknown Source) 
                  at com.myapp.activities.bj.onResume(Unknown Source) 
                  at android.support.v4.app.Fragment.performResume(Unknown Source) 
                  at android.support.v4.app.ae.a(Unknown Source) 
                  at android.support.v4.app.ae.a(Unknown Source) 
                  at android.support.v4.app.ae.f(Unknown Source) 
                  at android.support.v4.app.ae.g(Unknown Source) 
                  at android.support.v4.app.ae.b(Unknown Source) 
                  at android.support.v4.app.ah.finishUpdate(Unknown Source) 
                  at android.support.v4.view.ViewPager.populate(Unknown Source) 
                  at android.support.v4.view.ViewPager.populate(Unknown Source) 
                  at android.support.v4.view.ViewPager.onMeasure(Unknown Source) 
                  at android.view.View.measure(View.java:17547) 
                  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) 
                  at android.support.design.widget.CoordinatorLayout.onMeasureChild(Unknown Source) 
                  at android.support.design.widget.CoordinatorLayout.onMeasure(Unknown Source) 
                  at android.view.View.measure(View.java:17547) 
                  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) 
                  at android.widget.FrameLayout.onMeasure(FrameLayout.java:436) 
                  at android.view.View.measure(View.java:17547) 
                  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) 
                  at android.widget.FrameLayout.onMeasure(FrameLayout.java:436) 
                  at android.view.View.measure(View.java:17547) 
                  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) 
                  at android.widget.FrameLayout.onMeasure(FrameLayout.java:436) 
                  at android.support.v7.widget.ContentFrameLayout.onMeasure(Unknown Source) 
                  at android.view.View.measure(View.java:17547) 
                  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) 
                  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436) 
                  at android.widget.LinearLayout.measureVertical(LinearLayout.java:722) 
                  at android.widget.LinearLayout.onMeasure(LinearLayout.java:613) 
                  at android.view.View.measure(View.java:17547) 
                  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) 
                  at android.widget.FrameLayout.onMeasure(FrameLayout.java:436) 
                  at android.view.View.measure(View.java:17547) 
                  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) 
                  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436) 
                  at android.widget.LinearLayout.measureVertical(LinearLayout.java:722) 
                  at android.widget.LinearLayout.onMeasure(LinearLayout.java:613) 
                  at android.view.View.measure(View.java:17547) 
                  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) 
                  at android.widget.FrameLayout.onMeasure(FrameLayout.java:436) 
                  at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2615) 
                  at android.view.View.measure(View.java:17547) 
                  at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2015) 
                  at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1173) 
                  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1379) 
                  at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1061) 
                  at android.view.ViewRootImpl$TraversalRunnable.run(

#for support library 
# support design 
-dontwarn android.support.design.** 
-keep class android.support.design.** { *; } 
-keep interface android.support.design.** { *; } 
-keep public class android.support.design.R$* { *; } 

#Support v7 
# Hide warnings about references to newer platforms in the library 
-dontwarn android.support.v7.** 
# don't process support library 
-keep class android.support.v7.** { *; } 
-keep interface android.support.v7.** { *; } 

#Support v4 
# Hide warnings about references to newer platforms in the library 
-dontwarn android.support.v4.** 
# don't process support library 
-keep class android.support.v4.** { *; } 
-keep interface android.support.v4.** { *; } 

私が何をするか分からない - エラーの説明ではありません本当に言っているので、私はassertionErrorがどこから来るのか分からない。

誰でもこれを解決する方法を知っていますか?

答えて

0

私はProguardにはかなり新しくなっていますが、調査後にその答えを理解しました。私は、スタックトレースが難読化されたとして、あなたはスタックトレースを、難読化DEことができ、このウェブサイトを読んで - あなたは、AAAまたはBBB等:Mac用のhttps://developer.android.com/tools/help/proguard.html

を参照してください理由です、あなたがこのフォルダに移動する必要があります。

sdk/tools/proguard/bin/ 

内にretrace.shスクリプトが表示されます。あなたは今ここにあなたのフォルダ内のmapping.txtファイルを見つける必要があります:

app/build/outputs/mapping/release/ 

はSHが配置されているbinフォルダにコピーします。次に、難読化したいスタックトレースの部分をコピーし、テキストファイルに貼り付けてbinフォルダに入れます。オープンdeobfuscated_trace.txt

sh retrace.sh -verbose mapping.txt obfuscated_trace.txt > deobfuscated_trace.txt 

し、エラーが実際にGSONを指していることがわかります:

は端末に非難読化するには、次のコマンドを使用します。 GSONのproguardルールをインポートして修正しました。

あなたはログは次のようになります表示され、正しくrunnedそのProGuardのを確認するには:以前にそれはあったであろう、

04-06 21:20:15.453 6853-6853/com.myapp E/y: last vis 3 
04-06 21:20:15.463 6853-6853/com.myapp E/y: last vis 3 
04-06 21:20:15.480 6853-6853/com.myapp E/y: last vis 3 

あなたはクラス名が今難読化されていることがわかります。

04-06 21:20:15.453 6853-6853/com.myapp E/MyFragment: last vis 3 
0

これらの行をproguard.txtファイルに追加すると役立ちます。

-dontwarn com.google.** { *; } 
-keep class com.google.** { *; } 
-keep interface com.google.** { *; } 
関連する問題