协慌网

登录 贡献 社区

不幸的是,MyApp 已停止。我该如何解决?

我正在开发一个应用程序,每次运行它时,都会收到消息:

不幸的是,MyApp 已停止。

我该怎么解决?


关于这个问题 - 显然是受什么是堆栈跟踪的启发,以及如何使用它来调试应用程序错误? ,有很多问题表明它们的应用已崩溃,没有任何进一步的细节。这个问题旨在指导新手 Android 程序员如何自行解决问题或提出正确的问题。

答案

此答案描述了检索堆栈跟踪的过程。已经有堆栈跟踪了吗?在 “ 什么是堆栈跟踪,以及如何使用它来调试应用程序错误? ” 中阅读堆栈跟踪。

问题

您的应用程序退出,因为引发了未捕获的RuntimeException
其中最常见的是NullPointerException

怎么解决呢?

每当 Android 应用程序崩溃(或与此相关的任何 Java 应用程序)崩溃时,都会将Stack trace写入控制台(在本例中为 logcat)。此堆栈跟踪包含解决问题的重要信息。

Android Studio

在Android Studio中查找堆栈跟踪

在窗口的底部栏中,单击Logcat按钮。或者,您可以按alt + 6 。确保在 “ Devices面板中选择了仿真器或设备。接下来,尝试找到以红色显示的堆栈跟踪。可能有很多东西登录到 logcat 中,因此您可能需要滚动一下。查找堆栈跟踪的一种简单方法是清除 logcat(使用右侧的回收站),然后让应用再次崩溃。

我已经找到了堆栈跟踪,现在呢?

好极了!您已经解决了一半问题。
您只需分析堆栈跟踪,找出导致应用程序崩溃的原因。

在 “ 什么是堆栈跟踪,以及如何使用它来调试应用程序错误? ” 中阅读堆栈跟踪。

我仍然无法解决我的问题!

如果您已经找到了Exception及其发生的行,但是仍然想不出解决方法,请随时在 StackOverflow 上提问。

尽量简明扼要:发布堆栈跟踪和相关代码(例如,在抛出Exception行之前增加几行)。

您可以使用Google 的 ADB 工具获取Logcat file来分析问题。

adb logcat > logcat.txt

打开logcat.txt文件并搜索您的应用程序名称。应该有关于失败原因,行号,类名等的信息。

首先,您检查您的应用崩溃了的那一点( Unfortunately, MyApp has stopped. )。为此,可以使用Log.e("TAG", "Message"); ,使用此行,您可以在 logcat 中看到您的应用程序日志。

之后,您会发现您的应用停止了哪一点,这很容易在您身边解决。