如何修复这个导致我的Android应用程序在某些手机上崩溃的异常错误?

时间:2011-09-10 22:42:51

标签: android

我最近完成了Android智能手机游戏的开发。

它是使用android 2.1 sdk设计的,在我的测试设备上运行没有问题2.1 samsung galaxy europa和2.2 samsung galaxy tab并且似乎在2.3.3的模拟器中运行良好。

直到最近,它对我的​​朋友HTC欲望S运行良好,但突然它停止工作,开始时崩溃。

android开发者控制台在崩溃时吐出这个日志:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.survivaltraildemo/com.survivaltraildemo.SurvivalTrail}: android.content.res.Resources$NotFoundException: Resource ID #0x0
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1816)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1837)
at android.app.ActivityThread.access$1500(ActivityThread.java:132)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1033)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:143)
at android.app.ActivityThread.main(ActivityThread.java:4196)
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)
Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x0
at android.content.res.Resources.getValue(Resources.java:901)
at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:547)
at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:605)
at com.survivaltraildemo.StaticValues.loadInventory(StaticValues.java:609)
at com.survivaltraildemo.SurvivalTrail.onCreate(SurvivalTrail.java:31)  
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1780)
... 11 more

在第一个活动的onCreate方法结束时运行loadInventory方法时,似乎错误是由未找到资源引起的。

加载清单方法采用活动的上下文。

以下是令人讨厌的代码:

int id = context.getResources().getIdentifier(name.toLowerCase(),"drawable",context.getPackageName());
                  bullet_images.add(BitmapFactory.decodeResource(context.getResources(),id));

此代码在过去的两个月内没有被触及,在我的2.1和2.2设备上没有遇到问题,但我必须做点什么。似乎突然有些手机无法看到资源,但不幸的是我无法复制这个错误而且我的朋友还不够,并且因为纠缠他让我拿起手机并继续尝试修复它而对我感到非常生气。

任何帮助都会非常感激,因为这让我很生气,特别是因为我不能用我的任何设备复制这个bug。由于下载了我的应用程序的人没有留下任何有用的反馈或提交许多错误报告,我甚至没有确认它在2.3.3上有效。希望这只是HTC的android变种的一个错误。

如果您想亲自试用该应用,看看它是否会在您的手机上发生,这是Android Market上的演示 https://market.android.com/details?id=com.survivaltraildemo&feature=search_result

4 个答案:

答案 0 :(得分:2)

当我在模拟器上快速迭代(调整/测试)时,我有时会遇到这样的错误。他们通常通过做一个" ant clean"然后重新编译。您可以尝试清理然后进行全新构建,将其安装在朋友设备上,然后查看是否仍然出现错误。

-Kurtis

答案 1 :(得分:1)

您是否考虑过/研究过这是否确实存在资源问题...这意味着该资源是否实际存在于Android试图从中提取的文件夹中?

答案 2 :(得分:1)

我目前正面临生产应用程序中的崩溃,并且发现了问题。这种崩溃只发生在HTC设备上。似乎HTC改变了解码资源的核心Android方法。

BitmapFactory.decodeResource的文档说:

Returns
     The decoded bitmap, or null if the image could not be decode.

但崩溃的HTC版本:(

答案 3 :(得分:0)

在我的情况下,我错误地放置了" xml"夹。它是项目的根本,但只是在" / res"文件夹和错误消失了。