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

不幸的是,MyApp已停止。

我可以做什么来解决这个问题?


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


当前回答

只有当代码中出现致命异常,停止应用程序的执行时,才会显示此弹出窗口。它可以是任何异常NullPointerException、OutOfMemoryException等。

最好的检查方法是通过Logcat,如果您仍在Android studio中开发应用程序,这是快速读取堆栈跟踪并检查应用程序原因的方法。

如果你的应用已经上线,那么你就不能使用logcat。因此,您可以实现Crashlytics,为您提供任何异常的错误报告。

其他回答

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

问题

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

如何解决?

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

Android工作室

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

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

耶!你的问题已经解决了一半。您只需要通过分析堆栈跟踪来找出应用程序崩溃的原因。

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

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

如果您找到了异常及其发生的行,但仍然无法确定如何修复它,请不要犹豫,在StackOverflow上提问。

尽量简洁:发布堆栈跟踪和相关代码(例如,在引发异常的行之前的几行)。

首先,你检查你的应用程序在哪个点崩溃了(不幸的是,MyApp已经停止。)。为此,你可以使用Log.e(“TAG”,“Message”);,使用这一行,您可以在logcat中查看应用程序日志。

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

Logcat-在Android Studio的开发阶段检查日志

最初清除Logcat并让应用程序再次崩溃,这样您只能获得崩溃的日志详细信息。你必须检查堆栈跟踪

不幸的是,MyApp已停止。这有很多原因。你可以在日志中查看。为此,您可以使用Log.e(“标签”、“消息”);

应用程序崩溃期间的常见错误,如:

编码错误(错误使用关键字)。属性名称不匹配。不支持的插件(可能)。版本不匹配(可能)。AndroidManifest文件中缺少活动。AndroidManifest文件中缺少权限。最常见的NullPointerException。已声明但未定义。

要解决应用程序崩溃错误:

记住以上几点并仔细阅读。出现错误后,您将获得蓝色的文件名(单击它们并跳转到发生错误的代码)。

使用LogCat并尝试查找导致应用程序崩溃的原因。

如果您使用Android Studio,请按ALT+6查看Logcat或

如果您使用Eclipse,那么窗口->打开透视->其他-LogCat

转到LogCat,从下拉菜单中选择错误。这将包含帮助您调试所需的所有信息。如果这没有帮助,发布LogCat作为对您问题的编辑,有人会帮助您解决问题。

您还可以自行获取此错误消息,而无需任何堆栈跟踪或任何进一步的错误消息。

在这种情况下,您需要确保您的Android清单配置正确(包括库中发生的任何清单合并以及库中的任何活动),并特别注意清单文件中应用程序中显示的第一个活动。