2011-12-16 11 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以下で発生します。これは、たとえばImageViewのsetAlpha(...)コールで発生することがあります。

ものがゼロのためにこの場合のShapeDrawable.setPadding(int, int, int, int)チェックパラメータの古い実装がnullにパディングのRectを設定することである:

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

同時にのRect(のRect R)コンストラクタは、単に受信したときにクラッシュnullパラメータ。

したがって、NPE条件を避けるために、解決策はdrawable.setPadding(new Rect());を追加することです。

関連する問題