2011-12-16 2 views
2

최근에 응용 프로그램 업데이트를 푸시했으며, 응용 프로그램을 시작하기 전에 사용자가 충돌 보고서를 많이 받았습니다. 스택 트레이스가 있지만 클래스를 인식하지 못하기 때문에 어디서부터 시작해야할지 모르겠습니다.업데이트 후에 응용 프로그램 강제 종료가 계속됩니다.

이 스택 추적입니다 :

v2.0 Dec 16, 2011 11:00:03 AM   17 reports/week    17 reports 
java.lang.NullPointerException 
at android.graphics.Rect.<init>(Rect.java:72) 
at android.graphics.drawable.ShapeDrawable.mutate(ShapeDrawable.java:359) 
at android.widget.ImageView.applyColorMod(ImageView.java:1275) 
at android.widget.ImageView.onSetAlpha(ImageView.java:290) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1614) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1644) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1644) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
at android.view.View.draw(View.java:6883) 
at android.widget.FrameLayout.draw(FrameLayout.java:357) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1646) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373) 
at android.view.View.draw(View.java:6883) 
at android.widget.FrameLayout.draw(FrameLayout.java:357) 
at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2094) 
at android.view.ViewRoot.draw(ViewRoot.java:1525) 
at android.view.ViewRoot.performTraversals(ViewRoot.java:1261) 
at android.view.ViewRoot.handleMessage(ViewRoot.java:1862) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:130) 
at android.app.ActivityThread.main(ActivityThread.java:3806) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:507) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
at dalvik.system.NativeStart.main(Native Method) 

실제 범인 난에보고해야한다 무엇을 여기에 적어도 될 수있는 것을 어떤 아이디어?

minSdkVersion을 더 높은 API로 변경했습니다. API가 낮은 사용자가 업데이트하려고 시도하거나이 경우 다운로드 할 수도 없습니까?

도움을 주시면 대단히 감사하겠습니다. 고맙습니다!

업데이트 : @LuxuryMode, 답장을 보내 주셔서 감사합니다! 불행히도,이 부분은 응용 프로그램 계정의 충돌 오류 아래 충돌 보고서에서보고있는 것입니다. 다른 곳을보고 있을까요? 날짜 및 시간, 응용 프로그램 버전 및 보고서 수를 게시 한 다음이 스택 추적을 반복해서 게시합니다.

상단

, 거기에 다음

Exception class  java.lang.NullPointerException 
Source method  Rect.<init>() 

우리는 응용 프로그램이 시작될 때 C2DM을 위해 사용자를 등록하려는 -이 API 레벨이 8보다 낮은 경우, 또는 응용 프로그램 충돌이 그냥 실패 할 것이다을 아무 말 않고? (비록이 스택 추적에서 특정 C2DM이 전혀 보이지 않는다.)

+0

아니요, 이것은 sdk 버전과 아무 관련이 없습니다. 당신은 nullpointer를 얻지 못할 것입니다. 예외를 얻으면 앱이 실행 중이며 예외가 발생했음을 의미합니다. 로그에 그게 전부라고 확신합니까? 예외가 던져진 곳을 알려주는 것이 더 있어야합니다. – LuxuryMode

+0

이것은 전체 스택 추적이 아닙니다. –

+0

이것은 전체 스택 추적입니다. 정확히 같은 신비한 문제가 있습니다. Btw ruxy,이 문제를 어떻게 해결 했습니까? ? – qkx

답변

0

나는 그것이 너무 늦었다 고 알고 있지만,이 문제를 재현하여 해결책을 찾았다.

이 문제는 ShapeDrawable 객체의 패딩이 (0, 0, 0, 0)이고이 객체가 변형을 필요로 할 때 API 15 이하 버전에서 발생합니다. 예를 들어 setAlpha(...) ImageView를 호출하면이 문제가 발생할 수 있습니다. 사각형 (사각형의 R) 생성자는 단순히 수신에 충돌 동시에

public void setPadding(int left, int top, int right, int bottom) 
{ 
    if ((left | top | right | bottom) == 0) { 
     mShapeState.mPadding = null; 
    } 
} 

:

것은 제로를위한이 경우 ShapeDrawable.setPadding(int, int, int, int) 체크 매개 변수의 이전 구현은 null로 패딩 사각형을 설정한다는 것입니다 null 파라미터.

그래서 해결책은 NPE 조건을 피하기 위해 drawable.setPadding(new Rect());을 추가하는 것입니다.

관련 문제