2012-02-06 66 views
2

我綜合ACRA我的應用程序從我beta版體育場應用得到崩潰報告,以便我能夠修復錯誤,查找代碼等錯誤,如果我在模擬器上運行此一切工作正常,ACRA啓動並運行,但如果我導出我的Android應用程序的工具的簽名的包我得到一個ExceptionInInitializeError和應用是動力設備上關閉。如果我抓住這個錯誤,並繼續不ACRA本身運行就像一個魅力的應用...獲取java.lang中的ExceptionInInitializerError初始化ACRA

,有沒有人在這裏得到了與ACRA同樣的問題?它可能與ProGuard有關嗎?我遵循ProGuard如何在ACRA主頁上,但也許我錯過了這個東西?

這裏就是我的proguard.cfg樣子: -injars 'C:\工作區\ motodevWs \ gp2012 \ BIN \班' -injars 'C:\工作區\ motodevWs \ gp2012 \庫' -outjars「C :\工作區\ motodevWs \ gp2012 \ BIN \類-processed.jar」

-libraryjars 'C:\android\android-sdk\platforms\android-7\android.jar' 
-libraryjars 'C:\android\android-sdk\add-ons\addon_google_apis_google_inc_7 \libs\maps.jar' 

-optimizations !code/simplification/arithmetic 
-allowaccessmodification 
-repackageclasses '' 
-keepattributes *Annotation*,SourceFile,LineNumberTable,*Annotation* 
-renamesourcefileattribute SourceFile 
-dontpreverify 
-dontwarn java.awt.**,javax.security.**,java.beans.**,com.sun.** 


-keep public class * extends android.app.Activity 

-keep public class * extends android.app.Application 

-keep public class * extends android.app.Service 

-keep public class * extends android.content.BroadcastReceiver 

-keep public class * extends android.content.ContentProvider 

-keep public class * extends android.view.View { 
    public <init>(android.content.Context); 
    public <init>(android.content.Context,android.util.AttributeSet); 
    public <init>(android.content.Context,android.util.AttributeSet,int); 
    public void set*(...); 
} 

-keepclasseswithmembers class * { 
    public <init>(android.content.Context,android.util.AttributeSet); 
} 

-keepclasseswithmembers class * { 
    public <init>(android.content.Context,android.util.AttributeSet,int); 
} 

-keepclassmembers class * extends android.os.Parcelable { 
    static android.os.Parcelable$Creator CREATOR; 
} 

-keepclassmembers class **.R$* { 
    public static <fields>; 
} 

# keep this class so that logging will show 'ACRA' and not a obfuscated name like 'a'. 
# Note: if you are removing log messages elsewhere in this file then this isn't necessary 
-keep class org.acra.ACRA { 
    <fields>; 
    <methods>; 
} 

# keep this around for some enums that ACRA needs 
-keep class org.acra.ReportingInteractionMode { 
    <fields>; 
    <methods>; 
} 

# keep this otherwise it is removed by ProGuard 
-keep public class org.acra.ErrorReporter { 
    public void addCustomData(java.lang.String,java.lang.String); 
} 

# keep this otherwise it is removed by ProGuard 
-keep public class org.acra.ErrorReporter { 
    public org.acra.ErrorReporter$ReportsSenderWorker handleSilentException(java.lang.Throwable); 
} 

問題解決了! 一些努力研究和反思我的問題我找到了解決問題的辦法,並在我的proguard.cfg文件,其中我錯過了一些東西確實是後!

不知何故,我設法不保留枚舉,現在我加入

-keepclassmembers enum * { 
public static **[] values(); 
public static ** valueOf(java.lang.String); 
} 

proguard.cfg,一切都可以正常使用!

+0

你爲什麼叫'ErrorReporter.getInstance()的init(本);'第一?自從我設置了ACRA以來已經有一段時間了,但我只在應用程序中使用了'ACRA.init(this)',並且一切正常。 – THelper 2012-02-06 12:20:32

+0

我想這是由於對那裏有人提到,他曾經獲得了'ErrorReporter'類中幾乎同樣的錯誤,直到他初始化像這樣的問題表code.google.com/p/acra一個記錄的缺陷。我可能改回來,因爲現在我發現我的代碼中的錯誤自己和它確實是我的'proguard.cfg'文件...連接 – herom 2012-02-06 12:34:20

+0

好的,請不要在你的問題的解決方案,因爲這樣你的問題狀態將保持「懸而未決」。如果您將解決方案作爲答案發布並接受,則問題將被標記爲「已回答」。 – THelper 2012-02-06 13:05:04

回答

0

因此,要關閉這個問題與我發現自己的答案,這裏是我做過什麼來解決這個特定的問題:)(從我的問題後服用):

研究經過一番努力,並重新思考我的問題我找到了解決這個問題的辦法,確實在我的proguard.cfg文件中我錯過了一些東西!

不知何故,我設法不保留枚舉,現在我加入

-keepclassmembers enum * { 
public static **[] values(); 
public static ** valueOf(java.lang.String); 
} 

我proguard.cfg,一切都可以正常使用!