Android 更新后,应用程序强制持续关闭

Android 更新后,应用程序强制持续关闭,android,nullpointerexception,stack-trace,crash-reports,Android,Nullpointerexception,Stack Trace,Crash Reports,我最近推送了一个应用程序的更新,现在我从用户那里收到了很多关于它在打开应用程序之前崩溃的报告。我有堆栈跟踪,但我不认识其中的任何类,所以我甚至不知道从哪里开始查找 这是堆栈跟踪: v2.0 Dec 16, 2011 11:00:03 AM 17 reports/week 17 reports java.lang.NullPointerException at android.graphics.Rect.<init>(Rect.java

我最近推送了一个应用程序的更新,现在我从用户那里收到了很多关于它在打开应用程序之前崩溃的报告。我有堆栈跟踪,但我不认识其中的任何类,所以我甚至不知道从哪里开始查找

这是堆栈跟踪:

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)
v2.0 2011年12月16日11:00:03上午17份报告/第17周报告
java.lang.NullPointerException
在android.graphics.Rect.(Rect.java:72)
位于android.graphics.drawable.ShapeDrawable.mutate(ShapeDrawable.java:359)
在android.widget.ImageView.applyColorMod(ImageView.java:1275)上
位于android.widget.ImageView.onSetAlpha(ImageView.java:290)
位于android.view.ViewGroup.drawChild(ViewGroup.java:1614)
在android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)上
位于android.view.ViewGroup.drawChild(ViewGroup.java:1644)
在android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)上
位于android.view.ViewGroup.drawChild(ViewGroup.java:1644)
在android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)上
在android.view.view.draw(view.java:6883)
位于android.widget.FrameLayout.draw(FrameLayout.java:357)
位于android.view.ViewGroup.drawChild(ViewGroup.java:1646)
在android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)上
在android.view.view.draw(view.java:6883)
位于android.widget.FrameLayout.draw(FrameLayout.java:357)
在com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2094)上
位于android.view.ViewRoot.draw(ViewRoot.java:1525)
在android.view.ViewRoot.performTraversals(ViewRoot.java:1261)
在android.view.ViewRoot.handleMessage(ViewRoot.java:1862)
位于android.os.Handler.dispatchMessage(Handler.java:99)
位于android.os.Looper.loop(Looper.java:130)
位于android.app.ActivityThread.main(ActivityThread.java:3806)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:507)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:839)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
在dalvik.system.NativeStart.main(本机方法)
你知道真正的罪魁祸首可能在这里,或者至少我应该调查什么吗

我们已经将Minsdk版本更改为更高的API,是否有可能使用较低API的用户正在尝试更新,或者在这种情况下他们甚至无法下载它

非常感谢您的帮助!谢谢大家!

更新:@LuxuryMode,谢谢您的回复!不幸的是,这就是我在应用程序帐户的崩溃错误下的崩溃报告中看到的全部内容,我应该找其他地方吗?它一次又一次地发布日期和时间、应用程序版本和报告数,然后是堆栈跟踪

在顶部,有以下内容:

Exception class     java.lang.NullPointerException
Source method       Rect.<init>()
异常类java.lang.NullPointerException
源方法Rect.()

我们正在尝试在应用程序启动时为C2DM注册用户-如果API级别低于8,应用程序会崩溃吗?还是会自动失败?(虽然我在这个堆栈跟踪中没有看到任何C2DM特有的东西)

我知道已经太晚了,但我重现了这个问题并找到了解决方案

当ShapeDrawable对象的填充为(0,0,0,0)且该对象需要变异时,API 15及以下版本存在此问题。例如,这可能发生在调用ImageView时

问题是,
ShapeDrawable.setPadding(int,int,int,int,int)
的旧实现检查参数是否为零,在本例中,将padding Rect设置为null:

public void setPadding(int left, int top, int right, int bottom)
{
    if ((left | top | right | bottom) == 0) {
        mShapeState.mPadding = null;
    }
}
同时,Rect(rectr)构造函数在接收null参数时崩溃


因此,解决方案是添加
drawable.setPadding(newrect())以避免NPE情况。

我知道这已经太晚了,但我重现了这个问题并找到了解决方案

当ShapeDrawable对象的填充为(0,0,0,0)且该对象需要变异时,API 15及以下版本存在此问题。例如,这可能发生在调用ImageView时

问题是,
ShapeDrawable.setPadding(int,int,int,int,int)
的旧实现检查参数是否为零,在本例中,将padding Rect设置为null:

public void setPadding(int left, int top, int right, int bottom)
{
    if ((left | top | right | bottom) == 0) {
        mShapeState.mPadding = null;
    }
}
同时,Rect(rectr)构造函数在接收null参数时崩溃


因此,解决方案是添加
drawable.setPadding(newrect())以避免NPE情况。

否,这与sdk版本无关。你不会得到一个空指针。获取异常表示应用程序正在运行并且引发了异常。你确定日志里只有这些吗?应该还有更多,告诉您异常抛出的位置。发布完整堆栈跟踪,包括以“引起…”开头的部分。这不是完整堆栈跟踪。这是完整堆栈跟踪,我有完全相同的神秘问题:)顺便问一下,ruxy,你是如何解决的?不,这与sdk版本无关。你不会得到一个空指针。获取异常表示应用程序正在运行并且引发了异常。你确定日志里只有这些吗?应该还有更多,告诉您异常抛出的位置。发布完整堆栈跟踪,包括以“引起…”开头的部分。这不是完整堆栈跟踪。这是完整堆栈跟踪,我有完全相同的神秘问题:)顺便问一下,ruxy,你是如何解决的?