2012-02-06 4 views
2

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

추가 모든 것이 완벽하게 작동한다!

+0

가 왜 부르지 ProGuard에서와 ACRA를 사용에 관한 위키는'ErrorReporter.getInstance() 초기화 지금 거기에 (이)'처음? 나 자신이 ACRA를 설치 한 이후로 꽤 오래되었지만, 내 응용 프로그램에서는'ACRA.init (this) '만 사용하고 모든 것이 잘 동작한다. – THelper

+0

나는이 문제를 code.google.com/p/acra의 문서화 된 버그로 인해서 누군가가 'ErrorReporter' 클래스 내에서 거의 같은 오류를 발생시키는 것으로 언급했기 때문에 이것을 시도했습니다. 나는 이제 내 자신의 코드에서 오류를 발견하고 내'proguard.cfg' 파일과 실제로 연결되어 있기 때문에 다시 되돌려 놓을 것입니다 ... – herom

+0

질문 상태가 그대로 유지되므로 질문에 해결책을 포함하지 마십시오. "보답 없는". 해결책으로 답변을 게시하고 동의하면 질문에 "답변 됨"으로 표시됩니다. – THelper

답변

0

그래서, 나 자신을 발견 대답이 질문을 닫습니다, 여기에 내가 (내 질문의 게시물에서 촬영)이 특정 문제 : 해결하기 위해 무슨 짓을 :

연구에 어떤 노력 후

내 문제를 다시 생각을 나는 그 문제에 대한 해결책을 찾았고 실제로 뭔가를 놓친 나의 proguard.cfg 파일에 있었다!

어떻게 든 내가 열거 형을 유지하지 관리, 지금은 내 proguard.cfg에

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

추가 모든 것이 완벽하게 작동한다! .

관련 문제