ACRA를 응용 프로그램에 통합하여 베타 스타디움의 응용 프로그램에서 오류 보고서를 가져 와서 버그를 수정하고 코드에서 오류를 찾을 수 있습니다. 에뮬레이터에서이 프로그램을 실행하면 모든 것이 잘 작동하고 ACRA가 실행 중이지만 안드로이드 도구를 사용하여 내 응용 프로그램의 서명 된 패키지를 내 보내면 ExceptionInInitializeError가 발생하고 응용 프로그램이 강제 종료됩니다. 이 오류를 잡아 ACRA없이 진행하면 앱 자체가 매력처럼 작동합니다 ...ACRA를 초기화 할 때 java.lang ExceptionInInitializerError 받기
여기 ACRA와 동일한 문제가있는 사람이 있습니까? ProGuard와 관련이있을 수 있습니까? ProGuard를 따라 ACRA 홈페이지를 방문했지만 어쩌면 이걸 놓치고 있을까요? -injars 'C : \ 작업 공간 \ motodevWs \ gp2012 \ 빈 \ 클래스' -injars 'C : \ 작업 공간 \ motodevWs \ gp2012 \ libs와' -outjars 'C
여기 내 proguard.cfg처럼 보이는거야 : \ 작업 공간 \ motodevWs \ gp2012 \ 빈 \ 클래스 - 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
파일에있었습니다!
proguard.cfg
에
을
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
추가 모든 것이 완벽하게 작동한다!
가 왜 부르지 ProGuard에서와 ACRA를 사용에 관한 위키는'ErrorReporter.getInstance() 초기화 지금 거기에 (이)'처음? 나 자신이 ACRA를 설치 한 이후로 꽤 오래되었지만, 내 응용 프로그램에서는'ACRA.init (this) '만 사용하고 모든 것이 잘 동작한다. – THelper
나는이 문제를 code.google.com/p/acra의 문서화 된 버그로 인해서 누군가가 'ErrorReporter' 클래스 내에서 거의 같은 오류를 발생시키는 것으로 언급했기 때문에 이것을 시도했습니다. 나는 이제 내 자신의 코드에서 오류를 발견하고 내'proguard.cfg' 파일과 실제로 연결되어 있기 때문에 다시 되돌려 놓을 것입니다 ... – herom
질문 상태가 그대로 유지되므로 질문에 해결책을 포함하지 마십시오. "보답 없는". 해결책으로 답변을 게시하고 동의하면 질문에 "답변 됨"으로 표시됩니다. – THelper