我正在开发一个应用程序,每次运行它时,我都会得到这样的信息:
不幸的是,MyApp已经停止了。
我能做什么来解决这个问题?
关于这个问题--显然是受什么是堆栈跟踪的启发,以及我如何使用它来调试我的应用程序错误?--有很多问题表明他们的应用程序已经崩溃,没有任何进一步的细节。 这个问题旨在指导Android程序员新手如何尝试并自己修复他们的问题,或者提出正确的问题。
这个答案描述了检索堆栈跟踪的过程。 已经有堆栈跟踪吗? 请阅读“什么是堆栈跟踪,以及如何使用它来调试应用程序错误?”
应用程序退出,因为引发了未捕获的RuntimeException
。
其中最常见的是NullPointerException
。
每次Android应用程序崩溃(或任何Java应用程序崩溃)时,都会向控制台写入一个堆栈跟踪
(在本例中是logcat)。 此堆栈跟踪包含解决问题的重要信息。
在窗口的底栏中,单击logcat
按钮。 或者,您也可以按Alt+6。 确保在设备
面板中选择了仿真程序或设备。 接下来,尝试查找堆栈跟踪,它显示为红色。 可能有很多东西登录到logcat,所以您可能需要滚动一点。 找到堆栈跟踪的一个简单方法是清除logcat(使用右边的回收站),然后让应用程序再次崩溃。
耶! 您已经解决了问题的一半。
您只需要通过分析堆栈跟踪,找出导致应用程序崩溃的确切原因。
请阅读“什么是堆栈跟踪,以及如何使用它来调试应用程序错误?”
如果您已经找到了异常
和它发生的行,但仍然无法找到修复它的方法,请毫不犹豫地向StackOverflow提出问题。
尽量简洁:发布堆栈跟踪和相关代码(例如,直到引发异常
的行为止的几行)。
您可以使用Google的ADB工具获取logcat文件
来分析问题。
adb logcat > logcat.txt
打开logcat.txt
文件并搜索应用程序名称。 应该有关于它失败的原因,行号,类名等信息。
首先,您检查您的应用程序在哪个点崩溃(不幸的是,MyApp已经停止。
)。 为此,您可以使用log.e(“tag”,“message”);
,使用这一行,您可以在Logcat中看到您的应用程序登录。
在那之后,你会发现你的应用程序停止了哪个点,在你身边就很容易解决了。