Cordova应用程序可以编译,但运行时会崩溃。如何获得错误报告?

Tim*_*Tim 4 debugging android crash-reports google-chrome-devtools cordova

我有一个可正确编译的Cordova应用程序。但是,当我在Android设备上用午餐时,应用程序立即在启动时崩溃。当我不知道错误是什么时,我很难调试...

问题:是否有办法从此崩溃中获取错误报告?

我通常使用chrome调试我的应用程序,但只有在该应用程序能够在设备上加载并运行的情况下,该方法才有效。

W0r*_*0le 5

您请求了一些有关logcat的文章...我在回答部分中输入内容,因为它太多了,无法发表评论:)

DOCS

如果是Android,则始终可以转到开发人员页面。

这里是关于logcat的Android页面

如果您使用的是Android Studio,还可以检查此LINK

捕捉

基本上,您可以使用以下命令捕获logcat:

adb logcat
Run Code Online (Sandbox Code Playgroud)

您可以在命令中添加很多参数,这些参数可以帮助您过滤和显示所需的消息...这是个人的...我总是使用以下命令来获取消息时间戳:

adb logcat -v time
Run Code Online (Sandbox Code Playgroud)

您可以将输出重定向到文件,然后在文本编辑器中对其进行分析。

分析

如果您的应用正在崩溃,您将得到类似以下内容的信息:

07-09 08:29:13.474 21144-21144/com.example.khan.abc D/AndroidRuntime: Shutting down VM
07-09 08:29:13.475 21144-21144/com.example.khan.abc E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.khan.abc, PID: 21144
    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.app.FragmentActivity.onBackPressed()' on a null object reference
     at com.example.khan.abc.AudioFragment$1.onClick(AudioFragment.java:125)
     at android.view.View.performClick(View.java:4848)
     at android.view.View$PerformClick.run(View.java:20262)
     at android.os.Handler.handleCallback(Handler.java:815)
     at android.os.Handler.dispatchMessage(Handler.java:104)
     at android.os.Looper.loop(Looper.java:194)
     at android.app.ActivityThread.main(ActivityThread.java:5631)
     at java.lang.reflect.Method.invoke(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:372)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
07-09 08:29:15.195 21144-21144/com.example.khan.abc I/Process: Sending signal. PID: 21144 SIG: 9
Run Code Online (Sandbox Code Playgroud)

日志的这一部分显示了很多信息:

  • 问题发生的时间: 07-09 08:29:13.475

检查问题发生的时间很重要...您可能在日志中发现多个错误...您必须确保检查的是正确的消息:)

  • 哪个应用崩溃了: com.example.khan.abc

这样,您就知道哪个应用程序崩溃了(以确保您正在检查有关消息的日志)

  • 哪个错误: java.lang.NullPointerException

NULL指针异常错误

  • 有关错误的详细信息: Attempt to invoke virtual method 'void android.support.v4.app.FragmentActivity.onBackPressed()' on a null object reference

您试图onBackPressed()FragmentActivity对象调用方法。但是,该对象是null您执行操作的时间。

  • 堆栈跟踪:堆栈跟踪向您显示方法的调用顺序...有时,错误发生在调用方法中(而不是在被调用方法中)。

    在com.example.khan.abc.AudioFragment $ 1.onClick(AudioFragment.java:125)

错误发生在file com.example.khan.abc.AudioFragment.javaonClick()方法内部的行:125(stacktrace显示发生错误的行)

称呼为:

at android.view.View.performClick(View.java:4848)
Run Code Online (Sandbox Code Playgroud)

调用者:

at android.view.View$PerformClick.run(View.java:20262)
Run Code Online (Sandbox Code Playgroud)

被称为:

at android.os.Handler.handleCallback(Handler.java:815)
Run Code Online (Sandbox Code Playgroud)

等等....

总览

这只是一个概述...并非所有日志都很简单,等等...只是为了分享想法并为您提供入门级信息...

希望我能有所帮助...