有没有一种方法可以通过调用中断的管道服务包来获取对该故障的堆栈跟踪?

时间:2018-09-04 13:20:15

标签: java android scheduled-tasks interop

我试图使用Android Studio在Android设备上运行应用程序,否则运行正常,但是在这种情况下,某些数据已从手机中删除,而该过程尚未完成,Android Studio试图安装并运行该应用程序,该应用程序导致我的手机卡住了一段时间并重新启动。

所以我想知道是否有一种方法可以获取错误的完整堆栈跟踪信息,这是否意味着我的应用程序可能没有正确地结构化并在运行中被杀死了重要的过程?

谢谢。

这是我当时遇到的错误:

  

安装失败,并显示消息无法完成会话:未知   故障(cmd:故障呼叫服务程序包:管道损坏(32))。

     

是   通过卸载现有解决此问题的可能   版本的apk(如果存在),然后重新安装。


PS :我不是在问如何解决此错误,因为我的应用程序正在运行,我想了解是什么原因引起的。

2 个答案:

答案 0 :(得分:1)

  

这是否意味着我的应用程序可能结构不正确,并在重要过程中被杀死?

嗯,我认为您不必担心,因为您提到自己的应用运行良好。我认为我们不应该在您的应用中搜索问题。由于运行良好,因此也应该对其进行编码。

  

Android Studio试图安装并运行该应用程序

我们去了!这纯粹是推测,但我认为Android Studio是问题所在。在开发应用程序时,每次进行更改时,Android Studio都会重新启动该应用程序。所谓的即时运行https://developer.android.com/studio/run/#ir-limitations

我开发了许多本机应用程序,但从未体验过即时运行。在极少数情况下,它会使我的应用程序格式错误。用户界面未正确重新加载,出现了几个问题。因此,每当我现在开发移动应用程序时,我都会禁用即时运行。

我所说的是即时运行,因为它可能在忙于执行一些I / O操作时破坏了您的应用程序。从您的角度来看这还不错,但是我建议您在不使用即时运行的情况下进行测试和开发。如果不立即运行,则可以保证在手机中安装完整的已编译应用程序。这将或将来也可以防止您遇到此问题。

答案 1 :(得分:0)

仅作一些说明:

  

“断管”错误的确切含义是什么?

     

这意味着当进程请求输出到管道或套接字时,   被同行关闭了。

因此,根据 Android Studio 中的错误,是 Grade Deamon 试图执行adb命令来安装最新版本的(推送)生成.apk文件(使用tcpip协议通过套接字编写应用程序包),但是adb与设备的连接丢失,因此Gradle无法执行命令。

有时,与设备的连接松动/不良会导致这种问题。

(在某些情况下,更新后的incremental dex不会写入设备,并且.apk由于过时的dex而损坏,因此它警告说要通过删除来重新安装apk旧的。)

现在,如果您无法从Android Studio“ Logcat”窗口中获取 logcat ,那么您仍然可以在终端中使用此命令来获取错误报告/ logcat

adb bugreport 'path to store bug report(optional)'

或使用

adb logcat

查看设备日志

要获取详细或已过滤的日志:link

这与您的查询无关:(这是否意味着我的应用程序可能结构不正确,并在重要过程中被杀死?)

因此,一旦您重新运行(重新安装) .apk

,一切都会很好