2012-02-06 67 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,一切都可以正常使用!