android retrce proguard(build api 23)

时间:2016-03-23 11:10:47

标签: android android-proguard

我最近开始在我的项目中使用proguard。 我创建了测试崩溃(在App类中) 我收到了下一个错误 -

 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)

我运行脚本

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

代表obfuskate代码,然后接收:

 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)

所以我刚收到方法,因为被抓住了。我想得到这条线,如果有可能,请帮忙!

PS也,我试过

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

并收到相同的结果

1 个答案:

答案 0 :(得分:1)

您需要向proguard配置文件添加下一条规则:

-keepattributes SourceFile,LineNumberTable

如果要隐藏实际的源文件名,请添加下一个规则:

-renamesourcefileattribute SomeName

并且所有文件名都将重命名为SomeName.java,但在反混淆之后,您将拥有类名和行号,这将允许您恢复实际的代码行