ACRAを初期化するときにjava.lang ExceptionInInitializerErrorを取得する

私はアプリケーションにACRAを統合して、ベータスタジアムで私のアプリからクラッシュレポートを取得しました。バグを修正したり、コード内のエラーを見つけたりできます。これをエミュレータで実行すると、すべて正常に動作し、ACRAは起動しています。 Android Toolsでアプリケーションの署名付きパッケージをエクスポートすると、ExceptionInInitializeErrorが発生し、アプリケーションが強制的にデバイス上で閉じられます。私がこのエラーをキャッチし、ACRAなしで進めると、アプリケーション自体が魅力的なように動作します...

誰もここにACRAと同じ問題がありますか?それはProGuardと何か関係があるのだろうか?私はProGuardのACRAホームページへの方法に従っていましたが、これについて何か不足していますか?

私のproguard.cfgは次のようになります。     -injars 'C:\ Workspaces \ motodevWs \ gp2012 \ bin \ classes'     -injars 'C:\ Workspaces \ motodevWs \ gp2012 \ libs'     -outjars 'C:\ Workspaces \ motodevWs \ gp2012 \ bin \ classes-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 (android.content.Context);
    public (android.content.Context,android.util.AttributeSet);
    public (android.content.Context,android.util.AttributeSet,int);
    public void set*(...);
}

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

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

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

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

# 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 {
    ;
    ;
}

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

# 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);
}

PROBLEM SOLVED! After some effort on research and rethinking my problem I found the solution to the problem and it was indeed in my proguard.cfg file where I missed something!

何とか私はenumを保持しないように管理しました。

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

私の proguard.cfg とすべてが完璧に動作しています!

2
私は、誰かが彼が ErrorReporter クラス内でほぼ同じエラーを出すのを手伝ったissueテーブルのcode.google.com/p/acraに関する文書化されたバグのために、この。私は自分のコードで自分自身のエラーを見つけたので、おそらくそれを元に戻します。本当に私の proguard.cfg ファイルに接続されていました...
追加された 著者 herom,
ありがとう@Theper、しかし、私はメンバーであるので、私が得たポイントの不足のために8時間以内に私自身の質問に答える機会がないと言いました...私は解決策で明日答えようとします;)
追加された 著者 herom,
なぜあなたは ErrorReporter.getInstance()。init(this); を呼び出しますか? ACRAを自分でセットアップしてからしばらく時間がかかりましたが、私は自分のアプリで ACRA.init(this)を使用するだけです。
追加された 著者 THelper,
質問のステータスが「未回答」のままになるため、問題に解決策を含めないでください。解決策として回答を投稿し、それを受け入れると、質問は「回答済み」とマークされます。
追加された 著者 THelper,

2 答え

だから、私は自分自身を見つけた答えでこの質問を閉じるために、私はこの特定の問題を解決するために何をしましたか:)(私の質問の投稿から取られました):

私の問題を調査して再考する努力の結果、私は問題の解決策を見つけました。実際に私が何かを見逃したのは私のproguard.cfgファイルでした!

何とか私はenumを保持しないように管理しました。

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

私のproguard.cfgとすべてが完璧に動作している!

0
追加された

今はProGuardでACRAを使用することに関するwikiです

https://github.com/ACRA/acra/wiki/Proguard

0
追加された