2015-05-04 5 views
6

Mein Crash-Bericht ist ein wenig nutzlos, wenn ich Proguard verwenden (minifyEnabled true und shrinkResources true)unbekannte Quelle, wenn ich Proguard

Dies ist der Bericht mit Proguard:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ProgressBar.setVisibility(int)' on a null object reference 
    at xx.xxxx.xxx.xxxxx.xxxxxx.restoreViewAfterLoading(Unknown Source) 
    at xx.xxxx.xxx.xxxxx.xxxxxx.newInstance(Unknown Source) 
                onCreateView 
                onViewCreated 
                access$000 
    at xx.xxxx.xxx.xxxxx.xxxxxx$1.success(Unknown Source) 
    at xx.xxxx.xxx.xxxxx.xxxxxx$1.success(Unknown Source) 
    at retrofit.CallbackRunnable$1.run(Unknown Source) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:135) 
    at android.app.ActivityThread.main(ActivityThread.java:5254) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

Und dies ist der normale Bericht ohne Proguard:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ProgressBar.setVisibility(int)' on a null object reference 
    at xx.xxxx.xxx.xxxxx.xxxxxx.restoreViewAfterLoading(xxxxxx.java:123) 
    at xx.xxxx.xxx.xxxxx.xxxxxx.access$000(xxxxxx.java:26) 
    at xx.xxxx.xxx.xxxxx.xxxxxx$1.success(xxxxxx.java:96) 
    at xx.xxxx.xxx.xxxxx.xxxxxx$1.success(xxxxxx.java:92) 
    at retrofit.CallbackRunnable$1.run(CallbackRunnable.java:45) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:135) 
    at android.app.ActivityThread.main(ActivityThread.java:5254) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

gibt es etwas, was ich tun kann Zeilennummern mit Proguard zu bekommen?

Antwort

9

Offenbar haben Sie eine NPE in einer Datei in der Methode restoreViewAfterLoading, wo setVisibility auf eine ProgressBar (die Null ist) um Zeile 123 einer Datei aufgerufen wird. Dies alles geschieht bei einem Retrofit Callback. Meine ersten Gedanken, die behoben werden müssen, sind die Überprüfung auf Null, falls der Benutzer diese Aktivität/dieses Fragment beendet hat.

bessere Zeilennummerierung zu erhalten, die folgende auf Ihre proguard Konfiguration

# Preserve annotations, line numbers, and source file names 
-keepattributes *Annotation*,SourceFile,LineNumberTable 

hinzufügen in verschleierten Stack-Traces Zeilennummern erhalten Dieser wird.

HTHS

+0

Ist das nicht dieser Kompromiss mit Sicherheit? – Rahul