我在Google Play上有一个应用程序,它正在遭受由一个空指针异常调用的崩溃。在Google控制台上查看崩溃的堆栈跟踪时,即使Android版本相同,堆栈跟踪报告的行号也因设备而异。既然这是Android代码,而且它是相同版本的Android,那么为什么行号不一样?
我有几个猜想: 1.)控制台将这些设备报告为Android4.4,但它们可能有不同的4.4.x版本。2.)这些是不同的设备,因此制造商已经更改了SDK中的一些代码,以说明每个特定的设备。
非常感谢所有的帮助,下面复制了示例堆栈跟踪。
此堆栈跟踪来自运行Android4.4的三星设备:
无法创建服务android.app.ActivityThread.access$1900(ActivityThread.java:174) at android.app.ActivityThread.access$1900(ActivityThread.java:174) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1389) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:146) at android.app.ActivityThread.main(ActivityThread.java,java.lang.RuntimeException: java.lang.NullPointerException:存储==空:5593)在java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) at dalvik.system.NativeStart.main(原生方法)的java.lang.reflect.Method.invokeNative(本地方法),原因是: java.lang.NullPointerException:存储== null at java.util.Arrays$ArrayList.(Arrays.java:38) at java.util.Arrays.asList(Arrays.java:155)
这个是来自不同的设备,但它也运行Android4.4:
无法创建服务android.app.ActivityThread.access$1800(ActivityThread.java:138) at android.app.ActivityThread.access$1800(ActivityThread.java:138) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1281) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java,java.lang.RuntimeException: java.lang.NullPointerException:存储==空:5111)在java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:780) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:596) at dalvik.system.NativeStart.main(原生方法)的java.lang.reflect.Method.invokeNative(本地方法),原因是: java.lang.NullPointerException:存储== null at java.util.Arrays$ArrayList.(Arrays.java:38) at java.util.Arrays.asList(Arrays.java:155)
发布于 2014-12-30 15:20:18
在我看来是一样的,看这条公共行,Caused by: java.lang.NullPointerException: storage == null at java.util.Arrays$ArrayList.(Arrays.java:38) at java.util.Arrays.asList(Arrays.java:155)
在MainService
类的某个位置,您似乎正在尝试将空数组转换为列表。让我们通过查看Arrays.asList代码来确认
public static <T> List<T> asList(T... array) {
return new ArrayList<T>(array);
}
好的,这调用了一个构造函数,它是也是在Arrays.java中
...
ArrayList(E[] storage) {
if (storage == null) {
throw new NullPointerException("storage == null");
}
a = storage;
}
...
这是storage == null
漫画的发源地。我的建议是,检查应用程序中空数组的使用情况。
为什么行号不一样?
这些不同的行与android框架有关,在这种特殊情况下,它如何启动您的服务,然后在启动过程中找到一个Null指针,然后失败。启动服务可能因设备而异,取决于制造商和API级别。
https://stackoverflow.com/questions/27713883
复制相似问题