2016-03-23 9 views
0

Ich habe vor kurzem mit Proguard in meinem Projekt begonnen. I erstellt Test crash (in App-Klasse) ich nächste Fehler empfangen -android retrace proguard (build api 23)

03-23 10:12:26.030 4956-4956/social.game.dating E/AndroidRuntime: FATAL EXCEPTION: main 
java.lang.NullPointerException 
at social.game.dating.App.App.m(Unknown Source) 
at social.game.dating.App.App.l(Unknown Source) 
at social.game.dating.App.App$a.a(Unknown Source) 
at social.game.dating.App.App$a.onPostExecute(Unknown Source) 
at android.os.AsyncTask.finish(AsyncTask.java:631) 
at android.os.AsyncTask.access$600(AsyncTask.java:177) 
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:5041) 
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:793) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
at dalvik.system.NativeStart.main(Native Method) 

Ich betreibe Skript

java -jar retrace.jar -verbose d:/mapping.txt d:/obf.txt > d:/fixed.txt 

Code obfuskate und erhalten neben:

03-23 10:12:26.030 4956-4956/social.game.dating E/AndroidRuntime: FATAL EXCEPTION: main 
java.lang.NullPointerException 
at social.game.dating.App.App.void initSync()(Unknown Source) 
at social.game.dating.App.App.void access$100()(Unknown Source) 
at social.game.dating.App.App$InitTask.java.lang.Void doInBackground(java.lang.Void[])(Unknown Source) 
void onPostExecute(java.lang.Void) 
at social.game.dating.App.App$InitTask.void onPostExecute(java.lang.Object)(Unknown Source) 
at android.os.AsyncTask.finish(AsyncTask.java:631) 
at android.os.AsyncTask.access$600(AsyncTask.java:177) 
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:5041) 
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:793) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
at dalvik.system.NativeStart.main(Native Method) 

I So gerade Methode erhalten, in der Ausnahme gefangen wurde. Ich würde gerne die Linie bekommen, wenn es möglich ist, bitte helfen!

PS auch, habe ich versucht,

retrace.bat -verbose d:/mapping.txt d:/obf.txt > d:/out.txt 

und erhielt das gleiche Ergebnis

+0

Ich habe gerade gefunden, wenn ich -keepattributes ** als ich hinzufüge bekomme richtige Zeilennummer –

Antwort

1

Sie müssen nächste Regel hinzufügen Konfigurationsdatei ProGuard:

-keepattributes SourceFile,LineNumberTable 

Wenn Sie tatsächliche Quelle ausblenden möchten Dateiname nächste Regel hinzufügen:

-renamesourcefileattribute SomeName 

und alle Dateinamen werden in SomeName.java umbenannt, aber nach der Entschleierung haben Sie den Klassennamen und die Zeilennummer, mit denen Sie die aktuelle Codezeile wiederherstellen können

+0

was ist, wenn ich -keepattributes ** verwende? Ich werde sonst etwas behalten, was wäre besser, um zu beleidigen/umzubenennen? –

+1

@AntonKizema Es wird alle möglichen Attribute behalten, vollständige Liste ist hier http://proguard.sourceforge.net/manual/attributes.html, aber ich denke nicht, dass das Halten von allen von ihnen eine großartige Idee ist. – curioushikhov

Verwandte Themen