當我是這樣的如何在Android上進行混淆調試(使用ProGuard)應用程序?
ERROR/AndroidRuntime(18677): Caused by: java.lang.NullPointerException
ERROR/AndroidRuntime(18677): at com.companyname.a.a.a(Unknown Source)
我怎麼能知道問題的所在和調試這個問題? 我只有ProGuard的映射輸出,並且不知道行號。 謝謝。
當我是這樣的如何在Android上進行混淆調試(使用ProGuard)應用程序?
ERROR/AndroidRuntime(18677): Caused by: java.lang.NullPointerException
ERROR/AndroidRuntime(18677): at com.companyname.a.a.a(Unknown Source)
我怎麼能知道問題的所在和調試這個問題? 我只有ProGuard的映射輸出,並且不知道行號。 謝謝。
將下列行添加到您的proguard配置中。
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
現在您的堆棧跟蹤將包括行號,並通過使用回掃工具附帶使用ProGuard(包含在Android SDK),您可以像調試正常。
請注意,即使您沒有使用這兩個配置選項,回溯仍然可以輸出有用的信息,只要您有映射文件,儘管不是完全明確。
注:與映射文件被ProGuard的配置選項生成:
-printmapping outputfile.txt
在隨Android SDK的Ant文件,它被設置爲的mapping.txt。
祝你好運。
要使用Android Market帳戶中的任何堆棧跟蹤,可以使用ProGuard配置中-printmapping
選項生成的地圖文件與ReTrace(ProGuard配套工具)解碼堆棧跟蹤。您也可以使用地圖文件的內容手工解碼,但這很枯燥。
在ProGuard手冊的示例中,有一節介紹如何生成有用的混淆堆棧軌跡,包括如何保留行號。
不幸的是,如果您沒有設置ProGuard來保留行號,那麼您將只能識別拋出異常的方法。
在stack_trace.txt
運行以下命令粘貼您的堆棧跟蹤:Java的罐子retrace.jar classes-processed.map stack_trace.txt
retrace.jar是在SDK \工具\ proguard的\ LIB \ retrace.jar classes-processed.map是,當你做了模糊處理
這個過程也在http://developer.android.com/guide/developing/tools/proguard.html所解釋的ProGuard生成的輸出文件#decoding – 2011-03-17 10:21:33
進入ADT 17(目前是預覽版)是對PorGuard爲Androi配置的進一步改變d。 http://tools.android.com/recent/proguardimprovements它不會更改如何使用打印映射進行調試,但它會改變最初配置ProGuard的方式。 – cistearns 2012-03-04 19:56:24
@cistearns我試過一樣,但出來的是相同的編碼值:(任何幫助? – 2014-01-10 04:56:37