我最近开始在我的项目中使用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
并收到相同的结果
答案 0 :(得分:1)
您需要向proguard配置文件添加下一条规则:
-keepattributes SourceFile,LineNumberTable
如果要隐藏实际的源文件名,请添加下一个规则:
-renamesourcefileattribute SomeName
并且所有文件名都将重命名为SomeName.java,但在反混淆之后,您将拥有类名和行号,这将允许您恢复实际的代码行