我正在开发一个应用程序,每次运行它,我都会得到这样的消息:
不幸的是,MyApp已停止。
我能做什么来解决这个问题?
- 关于这个问题-显然受到What is a stack trace, and how can I use it to debug my application errors?的启发,有很多问题表明他们的应用程序已经崩溃,没有任何进一步的细节。这个问题旨在指导新手Android程序员如何尝试自己解决问题,或提出正确的问题*
我正在开发一个应用程序,每次运行它,我都会得到这样的消息:
不幸的是,MyApp已停止。
我能做什么来解决这个问题?
23条答案
按热度按时间3z6pesqy1#
使用LogCat并尝试查找导致应用程序崩溃的原因。
若要查看Logcat,请使用Android Studio,然后按ALT+6,或
如果使用Eclipse,则窗口->打开透视->其他-LogCat
转到LogCat,从下拉菜单中选择错误。这将包含帮助您调试所需的所有信息。如果这不起作用,请将LogCat作为您问题的编辑发布,有人会帮助您。
unguejic2#
如果您的应用程序崩溃**,没有任何错误**,并且您没有使用资产管理器,但加载了如下纹理:
那就是问题所在。我遇到过这种情况。你应该始终使用资产管理器来避免内存过载。
23c0lvtd3#
检查Logcat消息。此外,请参阅D1C1D中缺少的元素,如定义
Activity
、User permission
等。若要查看Logcat,请使用Android Studio,然后按*alt+6***,或
如果使用Eclipse**,则窗口->打开透视->其他-LogCat
现在,从下拉菜单中选择错误。
或者,您可以使用ADB tool获取
Logcat file
来分析问题。现在打开
logcat.txt
文件并搜索应用程序名称。应该有关于失败原因、行号、类名等的信息。ugmeyewa4#
我建议你这样做。
1.检查您的手机是否有足够的空间,应用程序可以运行----Previor/
1.当应用程序崩溃时,检查logcat。它将显示应用程序崩溃的确切位置。
1.检查主线程上是否使用了由于ANR而占用大量内存的东西。
06odsfpq5#
在终端中运行此命令也有助于查找问题:
然后,您应该转到上面两个日志文件中的gradlew文件位置。
f4t66c6m6#
首先,您需要检查应用程序崩溃的位置和原因
(Unfortunately, MyApp has stopped.).
在LOG
的帮助下,您可以找出哪里出了问题。之后,您可以找到应用程序停止的点,并从您的点修复该点。
qpgpyjmq7#
如果您的终端中没有任何有趣的日志(或者它们与您的应用程序没有直接关系),可能您的问题是由于本地库。在这种情况下,您应该检查终端中的“墓碑”文件。
墓碑文件的默认位置取决于每个设备,但如果是这种情况,您将有一个日志,告诉您:
Tombstone written to: /data/tombstones/tombstone_06
有关更多信息,请查看https://source.android.com/devices/tech/debug。
cqoc49vn8#
开发过程中的崩溃
尝试我最喜欢的工具logview,以获取日志并在开发过程中进行分析。
确保在Linux中运行时将
./logview
和./lib/logview.jar
标记为可执行文件。如果你不喜欢,有很多替代品desktop log viewers for Android。
在野外坠毁
集成实时崩溃报告工具,如Firebase Crashlytics,以获取用户设备上发生的未处理异常的堆栈跟踪。
阅读How to Release a Buggy App (And Live to Tell the Tale),了解更多关于处理现场错误的信息。
4ngedf3f9#
Logcat-用于检查Android Studio开发阶段的日志
最初清除Logcat并让应用程序再次崩溃,这样您只能获得崩溃日志的详细信息。您必须检查堆栈跟踪
不幸的是,MyApp已经停止了一段时间。原因有很多。您可以在日志中检查。为此,您可以使用Log.e(“标记”、“消息”);
应用程序崩溃期间的常见错误如下:
1.编码错误(错误使用关键字)。
1.属性名称不匹配。
1.不支持的插件(可能)。
1.版本不匹配(可能)。
1.AndroidManifest文件中缺少活动。
1.AndroidManifest文件中缺少权限。
1.最常见的NullPointerException。
1.已声明但未定义。
要解决应用程序崩溃错误:
q7solyqu10#
人们会犯错误,编码也是如此。
当发生任何
error
时,始终使用红色文本检查logcat,但您可以在蓝色文本中找到真正的问题,并在红色文本中加下划线。确保创建新的
activity
时,始终在AndroidManifest
文件中声明activity
。如果添加权限,也在
AndroidMainifest
文件中声明。rggaifut11#
您还可以单独获得此错误消息,而不需要任何堆栈跟踪或任何其他错误消息。
在这种情况下,您需要确保Android清单配置正确(包括发生在库中的任何清单合并以及来自库的任何活动),并特别注意清单文件中应用程序中显示的第一个活动。
ar5n3qh512#
如果您的应用程序由于某种原因在没有良好的stacktrace的情况下崩溃。尝试从第一行开始调试它,然后逐行调试直到崩溃。然后你会得到答案,哪一行给你带来了麻烦。当然,您可以将其 Package 到try-catch块中,并打印错误输出。
zpf6vheq13#
问题
您的应用程序退出,因为抛出了未捕获的
RuntimeException
。其中最常见的是D1C1D。
如何解决?
每次Android应用程序崩溃(或任何Java应用程序崩溃),都会将
Stack trace
写入控制台(在本例中为logcat)。此堆栈跟踪包含解决问题的重要信息。安卓工作室
在窗口底部栏中,单击
Logcat
按钮。或者,您可以按alt+6。确保在Devices
面板中选择了仿真器或设备。接下来,尝试查找堆栈跟踪,以红色显示。logcat中可能记录了很多内容,因此您可能需要滚动一点。找到堆栈跟踪的一个简单方法是清除logcat(使用右侧的回收站),然后让应用程序再次崩溃。我找到了堆栈跟踪,现在怎么办?
耶!你的问题已经解决一半了。
您只需要通过分析堆栈跟踪来找出导致应用程序崩溃的确切原因。
读取“What is a stack trace, and how can I use it to debug my application errors?”中的堆栈轨迹
我还是不能解决我的问题!
如果您找到了
Exception
和它发生的线路,但仍然无法确定如何修复它,请毫不犹豫地询问StackOverflow问题。尽量简洁:发布堆栈跟踪和相关代码(例如,在抛出
Exception
的行之前的几行)。uqjltbpv14#
让我分享一个基本的Logcat分析,当您遇到强制关闭时(当应用程序停止工作时)。
文件
Android收集/分析日志的基本工具是logcat。
HERE是Android关于logcat的页面
如果您使用android Studio,也可以检查此链接。
捕获
基本上,您可以使用以下命令手动捕获logcat(或者只检查AndroidStudio中的AndroidMonitor窗口):
有很多参数可以添加到命令中,帮助您过滤和显示您想要的消息…这是个人的…我总是使用下面的命令来获取消息时间戳:
您可以将输出重定向到文件,并在文本编辑器中进行分析。
分析
如果你的应用程序崩溃,你会得到如下结果:
日志的这部分向您展示了许多信息:
07-09 08:29:13.475
检查问题发生的时间非常重要…您可能会在日志中发现多个错误…您必须确保您正在检查正确的消息:)
com.example.khan.abc
这样,您就知道哪个应用程序崩溃了(确保您正在检查有关消息的日志)
java.lang.NullPointerException
空指针异常错误
Attempt to invoke virtual method 'void android.support.v4.app.FragmentActivity.onBackPressed()' on a null object reference
您试图从
FragmentActivity
对象调用方法onBackPressed()
。但是,当您这样做时,该对象是null
。在com.example.khan.abc.AudioFragment$1.onClick(audiofragragment.java:125)
文件
com.example.khan.abc.AudioFragment.java
中发生错误,位于onClick()
方法中的第125
行(stacktrace显示发生错误的行)它被称为:
其被称为:
其被称为:
等
概述
这只是一个概述…不是所有的日志都很简单,但错误给出了具体的问题,详细显示了所有的问题…它只是为了分享想法并向您提供入门级信息。。。
我希望我能在某些方面帮助你……问候
omjgkv6w15#
在下面的showToast()方法中,您必须为上下文或应用程序上下文传递另一个参数,这样您可以尝试它。