Cordova 应用程序编译但在 运行 上崩溃。如何获取错误报告?
Cordova app compiles but crashes on run. How to get error report?
我有一个编译没有错误的 Cordova 应用程序。但是,当我将该应用程序连接到我的 android 设备时,它会在启动时立即崩溃。当我不知道错误是什么时,我很难调试......
问题:有没有办法从这次崩溃中获取错误报告?
我通常使用 chrome 来调试我的应用程序,但只有当应用程序能够加载并且 运行 在设备上时才有效。
您请求了一些关于 logcat 的文章...我将其放入答案部分,因为评论的信息太多了:)
文档
如果是 Android,您可以随时转到开发者页面。
HERE 是 Android 关于 logcat
的页面
如果你使用android Studio,你也可以检查这个LINK。
正在捕获
基本上,您可以使用以下命令捕获 logcat:
adb logcat
您可以在命令中添加很多参数来帮助您过滤和显示您想要的消息...这是个人的...我总是使用下面的命令来获取消息时间戳:
adb logcat -v time
您可以将输出重定向到文件并在文本编辑器中对其进行分析。
正在分析
如果您的应用程序崩溃,您会得到如下信息:
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.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
这部分日志向您展示了很多信息:
- 问题发生时间:
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
。
Stack Trace:Stack Trace 显示方法调用顺序...有时,错误发生在调用方法中(而不是被调用方法中)。
在 com.example.khan.abc.AudioFragment$1.onClick(AudioFragment.java:125)
文件 com.example.khan.abc.AudioFragment.java
中发生错误,在 onClick()
方法内的行: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)
等....
概览
这只是一个概述...并非所有日志都很简单等...只是为了分享想法并向您提供入门级信息...
我希望我能以某种方式帮助你......
此致
• 删除 MFP 的现有文件夹,命名为:cordova-plugin-mfp(旧版本的 MFP 插件)
• 现在 运行 此命令并安装了最新版本的 mfp – “cordova plugin add cordova-plugin-mfp@8.0.2018112111”
• 现在通过导航到此路径并打开 mfp 文件夹中的 Plugin.xml 文件重新检查版本:D:*********8\FMB_1128_MFP8\plugins\cordova-plugin-mfp\plugins.xml
• 您会看到这样的版本:version="8.0.2018112111" 8.0 代表 MFP-8:2018:更新年份:11:Month 更新
通过执行以下这些步骤,您将解决 android-p 版本 –'9'
应用程序的崩溃问题
我有一个编译没有错误的 Cordova 应用程序。但是,当我将该应用程序连接到我的 android 设备时,它会在启动时立即崩溃。当我不知道错误是什么时,我很难调试......
问题:有没有办法从这次崩溃中获取错误报告?
我通常使用 chrome 来调试我的应用程序,但只有当应用程序能够加载并且 运行 在设备上时才有效。
您请求了一些关于 logcat 的文章...我将其放入答案部分,因为评论的信息太多了:)
文档
如果是 Android,您可以随时转到开发者页面。
HERE 是 Android 关于 logcat
的页面如果你使用android Studio,你也可以检查这个LINK。
正在捕获
基本上,您可以使用以下命令捕获 logcat:
adb logcat
您可以在命令中添加很多参数来帮助您过滤和显示您想要的消息...这是个人的...我总是使用下面的命令来获取消息时间戳:
adb logcat -v time
您可以将输出重定向到文件并在文本编辑器中对其进行分析。
正在分析
如果您的应用程序崩溃,您会得到如下信息:
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.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
这部分日志向您展示了很多信息:
- 问题发生时间:
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
。
Stack Trace:Stack Trace 显示方法调用顺序...有时,错误发生在调用方法中(而不是被调用方法中)。
在 com.example.khan.abc.AudioFragment$1.onClick(AudioFragment.java:125)
文件 com.example.khan.abc.AudioFragment.java
中发生错误,在 onClick()
方法内的行: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)
等....
概览
这只是一个概述...并非所有日志都很简单等...只是为了分享想法并向您提供入门级信息...
我希望我能以某种方式帮助你...... 此致
• 删除 MFP 的现有文件夹,命名为:cordova-plugin-mfp(旧版本的 MFP 插件)
• 现在 运行 此命令并安装了最新版本的 mfp – “cordova plugin add cordova-plugin-mfp@8.0.2018112111”
• 现在通过导航到此路径并打开 mfp 文件夹中的 Plugin.xml 文件重新检查版本:D:*********8\FMB_1128_MFP8\plugins\cordova-plugin-mfp\plugins.xml
• 您会看到这样的版本:version="8.0.2018112111" 8.0 代表 MFP-8:2018:更新年份:11:Month 更新
通过执行以下这些步骤,您将解决 android-p 版本 –'9'
应用程序的崩溃问题