我正在开发一个应用程序,每次运行它,我都会得到这样的消息:
不幸的是,MyApp已停止。
我能做什么来解决这个问题?
- 关于这个问题-显然受到What is a stack trace, and how can I use it to debug my application errors?的启发,有很多问题表明他们的应用程序已经崩溃,没有任何进一步的细节。这个问题旨在指导新手Android程序员如何尝试自己解决问题,或提出正确的问题*
我正在开发一个应用程序,每次运行它,我都会得到这样的消息:
不幸的是,MyApp已停止。
我能做什么来解决这个问题?
23条答案
按热度按时间sf6xfgos16#
您必须检查
Stack trace
怎么做
在IDE上,检查windows窗体LOGCAT
如果看不到logcat窗口,请转到此路径并打开它
如果您正在使用Google Api,请转到以下路径:
j7dteeu817#
您可以使用以下任何工具:
1.亚洲开发银行logcat
1.adb logcat>日志。txt(您可以使用编辑器打开和搜索错误。)
1.eclipse logcat(如果在eclipse中不可见,请转到Windows->显示视图->其他->Android->logcat)
1.Android调试监视器或Android设备监视器(键入命令监视器或通过UI打开)
1.安卓工作室
我建议使用安卓调试监视器,很好。因为当有太多日志时,eclipse会挂起,并且通过adb logcat过滤器和所有困难。
ikfrs5lh18#
检查
Logcat
消息并查看Manifest
文件。应该缺少一些东西,如定义Activity,
User权限等。cotxawn719#
此弹出窗口仅在代码中出现致命异常时显示,该异常会停止应用程序的执行。它可能是任何例外
NullPointerException
、OutOfMemoryException
等。如果您仍在Android studio中开发应用程序,最好的检查方法是通过Logcat,这是读取堆栈跟踪并检查应用程序原因的快速方法。
如果您的应用程序已处于活动状态,则无法使用logcat。因此,您可以实现
Crashlytics
,为您提供发生的任何异常的错误报告。prdp8dxp20#
***注:**此答案使用Android Studio 2.2.2
***注2:**我认为您的设备已成功连接
当你的应用程序崩溃时,你要做的第一件事是查看LogCat,在Android Studio的底部有一个工具栏,其中有一系列菜单:
点击“安卓显示器”(我在上图中加下划线的显示器)
现在,你会得到这样的结果:
现在将“
Verbose
”更改为“Error
”,它将只显示记录的错误。现在不要担心所有这些错误(如果你有)。好吧,现在,做你做过的让你的应用崩溃的事情。应用程序崩溃后,请转到logcat。例如,您应该找到一个包含大量
at:x.x.x
:和Caused by: TrumpIsPresidentException
的新崩溃日志。转到日志目录中的Caused by:
语句。在
Caused By:
旁边,应该有发生的异常。在我的例子中,它是一个RuntimeException
,并且下面应该有一行包含蓝色链接,例如:**如果该
Caused by:
**下的某一行没有蓝色文本,则请查找另一行有蓝色文本的Caused by:
。点击蓝色链接。它会带您到问题发生的地方。在我的情况下,这是由于这一行:
现在我知道为什么它会崩溃了。这是因为我自己在抛出异常这是一个明显的错误。
但是,假设我有另一个错误:
我检查了我的logcat,点击了它给我的蓝色链接,它把我带到了这里:
所以,现在我想调试。根据this StackOverflow question,NullPointerException表示某些东西是
null
。所以,让我们找出什么是空。有两种可能性。
mTextView
或myString
为空。为了找到答案,在mTextView.setText(mString)
行之前,我添加了以下两行:现在,正如我们之前所做的(我们将Verose更改为Error),我们希望将“Error”更改为“Debug”。因为我们是通过调试登录的。以下是所有日志方法:
因此,由于我们使用了
Log.d
,我们正在检查调试。这就是为什么我们将其更改为调试。请注意,
Log.d
有第一个参数,在本例中为“AppDebug”。单击logcat右上角的“无过滤器”下拉菜单。选择“编辑过滤器配置”,为过滤器命名,并在“日志标记”中输入“应用程序调试”。单击“确定”。现在,您应该在logcat中看到两行:现在我们知道mTextView为空。
我观察我的代码,现在我注意到了一些东西。
我的
private TextView mTextView
在班上名列前茅。但是,我没有定义它。基本上,我忘记在onCreate()中执行此操作:
这就是为什么
mTextView
为空,因为我忘了告诉我的应用程序它是什么。所以我添加了这一行,运行我的应用,现在应用程序不会崩溃。wa7juj8i21#
只需检查log cat中的错误。
您可以从eclipse中获得log cat选项:
窗口->显示视图->其他->安卓->Logcat
日志cat包含错误。
换句话说,您也可以通过在调试模式下执行应用程序来检查错误。首先设置断点,然后执行以下操作:
右键单击项目->调试为->Android应用程序
g2ieeal722#
首先,检查应用程序崩溃的时间点(
Unfortunately, MyApp has stopped.
)。为此,您可以使用Log.e("TAG", "Message");
,使用该行您可以在logcat中看到您的应用程序日志。之后,你会发现你的应用程序停止了哪一点,这很容易在你身边解决。
yzckvree23#
您可以使用Google's ADB tool获取
Logcat file
来分析问题。打开
logcat.txt
文件并搜索应用程序名称。应该有关于失败原因、行号、类名等的信息。