วิธี trace crash log เมื่อใช้ Proguard
วิธี Trace crash log จาก Google Play เมื่อใช้ Proguard
ปกติแล้วเมื่อเราใช้ Proguard ใน Project จะพบว่า Crash log ใน Google Play จะ Report code ที่ถูก obfuscate มาแล้ว ตัวอย่างเช่น
java.lang.IndexOutOfBoundsException: Index: 3, Length: 3
at a.a.a.a.a.a(Unknown Source)
at com.example.www.cp.a(Unknown Source)
at com.b.a.a.f.a(Unknown Source)
at com.b.a.a.g.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5493)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1209)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025)
at dalvik.system.NativeStart.main(Native Method)
ทีนี้เรามาหาวิธีแปลงกลับ โดยการโหลด Proguard มาก่อน
ที่: http://sourceforge.net/projects/proguard/files/
หลังจากนั้นสร้างไฟล์มาไฟล์นึง ชื่อ obfuscated_trace.txt แล้วใส่ Error ที่ได้จาก Google Play Console ลงไป แล้วใช้คำสั่งด้านล่างใน CMD ตัวอย่างเช่น
C:\proguard4.10\bin>retrace.bat -verbose C:\workspace\{Project}\proguard\mapping.txt C:\log\obfuscated_trace.txt
สิ่งที่ใช้คือ
-retrace.bat
-mapping.txt ของ Project ที่ใช้ Proguard
-obfuscated_trace.txt ไฟล์ Error ที่ถูก Proguard ปั่นโค๊ด