我正在开发一个应用程序,每次运行它时,都会收到以下消息:
不幸的是,MyApp 已停止。
我能做些什么来解决这个问题?
关于这个问题 - 显然受到 什么是堆栈跟踪的启发,我如何使用它来调试我的应用程序错误? ,有很多问题表明他们的应用程序已经崩溃,没有任何进一步的细节。这个问题旨在指导新手 Android 程序员如何尝试自己解决问题,或提出正确的问题。
原文由 nhaarman 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在开发一个应用程序,每次运行它时,都会收到以下消息:
不幸的是,MyApp 已停止。
我能做些什么来解决这个问题?
关于这个问题 - 显然受到 什么是堆栈跟踪的启发,我如何使用它来调试我的应用程序错误? ,有很多问题表明他们的应用程序已经崩溃,没有任何进一步的细节。这个问题旨在指导新手 Android 程序员如何尝试自己解决问题,或提出正确的问题。
原文由 nhaarman 发布,翻译遵循 CC BY-SA 4.0 许可协议
可以使用 谷歌的ADB工具 获取 Logcat file
来分析问题。
adb logcat > logcat.txt
打开 logcat.txt
文件并搜索您的应用程序名称。应该有关于失败原因、行号、类名等的信息。
原文由 Vlad Bezden 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.2k 阅读
8 回答6k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.2k 阅读
2 回答3.9k 阅读
1 回答2.2k 阅读✓ 已解决
这个答案描述了检索堆栈跟踪的过程。已经有堆栈跟踪?阅读“ 什么是堆栈跟踪,如何使用它来调试我的应用程序错误? ”中的堆栈跟踪。
问题
您的应用程序退出,因为抛出了未捕获的
RuntimeException
。其中最常见的是
NullPointerException
。如何解决?
每次 Android 应用程序(或任何 Java 应用程序)崩溃时,都会将
Stack trace
写入控制台(在本例中为 logcat)。此堆栈跟踪包含解决问题的重要信息。安卓工作室
在窗口的底部栏中,单击
Logcat
按钮。或者,您可以按alt
+6
。确保在Devices
面板中选择了您的模拟器或设备。接下来,尝试查找堆栈跟踪,它以红色显示。可能有很多东西登录到 logcat,所以你可能需要滚动一下。找到堆栈跟踪的一个简单方法是清除 logcat(使用右侧的回收站),然后让应用程序再次崩溃。我找到了堆栈跟踪,现在怎么办?
耶!你已经解决了你的问题的一半。
您只需要通过分析堆栈跟踪来找出究竟是什么导致了您的应用程序崩溃。
阅读“ 什么是堆栈跟踪,如何使用它来调试我的应用程序错误? ”中的堆栈跟踪。
我仍然无法解决我的问题!
如果您找到了
Exception
和它发生的行,但仍然无法弄清楚如何修复它,请不要犹豫,在 StackOverflow 上提问。尽量简洁:发布堆栈跟踪和 相关 代码(例如,几行直到抛出
Exception
的行)。