未知故障(cmd:调用服务包失败:Broken pipe (32))
Posted
技术标签:
【中文标题】未知故障(cmd:调用服务包失败:Broken pipe (32))【英文标题】:Unknown failure (cmd:Failure calling service package: Broken pipe (32)) 【发布时间】:2019-02-09 13:10:01 【问题描述】:我尝试使用 android Studio 在我的 Android 设备上运行我的应用程序,否则它运行良好,但在这种情况下,我的手机中的一些数据被删除了,虽然该过程尚未完成,但 Android Studio 正在尝试安装并运行导致我的手机卡住一段时间并重新启动的应用程序。
所以我想知道是否有办法获取错误的完整堆栈跟踪,这是否意味着我的应用程序可能没有结构正确并在中间被杀死重要的流程?
谢谢。
这是我当时得到的错误:
安装失败并显示消息 Failed to finalize session : Unknown failure (cmd:Failure调用服务包: Broken pipe (32)).
这是 可能通过卸载现有的 apk 的版本(如果存在),然后重新安装。
PS:我不是在问如何解决这个错误,因为我的应用程序正在运行,我想了解可能导致它的原因。
【问题讨论】:
构建-> 清理项目 我的应用程序运行,我只是想了解错误信息背后的原因。 这导致我的手机卡了一会儿然后重启。,你的应用访问系统/根文件吗? @GiovanniTerlingen 不,它没有 你检查过 gradle 版本是最新的吗? 【参考方案1】:只是为了澄清一下:
Broken Pipe 错误究竟意味着什么?
这意味着当一个进程请求一个输出到管道或套接字时, 被同行关闭。
因此,根据 Android Studio 中的错误,Gradle Deamon 正在尝试执行 adb 命令来安装 (push) 最新生成.apk
文件(使用tcpip协议通过socket写入应用程序包)但adb与设备的连接丢失,导致Gradle无法执行命令。
有时,与设备的连接松动/不良会导致此类问题。
(在某些情况下,更新的incremental dex
不会被写入设备,并且.apk
会由于过时的dex
而损坏,因此它会警告通过删除旧的来重新安装apk。)
现在,如果您未能从 Android Studio 'Logcat' 窗口中获取 logcat,那么您仍然可以在终端中使用此命令获取错误报告/logcat
adb bugreport 'path to store bug report(optional)'
或使用
adb logcat
查看设备日志
获取详细或过滤日志:link
这与您的查询无关:(这是否意味着我的应用程序可能结构不正确并在一个重要进程的中间被杀死?)
所以,一旦你重新运行(重新安装)你的.apk
【讨论】:
【参考方案2】:这是否意味着我的应用程序可能结构不正确并在一个重要进程的中间被杀死?
嗯,我认为没有什么可担心的,因为您提到您的应用程序运行良好。我认为我们不应该在您的应用程序中搜索问题。既然它运行良好,它也应该编码良好。
Android Studio 正在尝试安装和运行该应用
我们去吧!这纯粹是猜测,但我认为 Android Studio 是问题所在。在开发应用程序时,每次进行更改时,Android Studio 都会重新启动应用程序。也就是所谓的即时运行:https://developer.android.com/studio/run/#ir-limitations
我开发了很多本机应用程序,但我从不喜欢即时运行。在极少数情况下,它会损坏我的应用程序。 UI 没有正确重新加载并出现几个问题。所以现在每当我开发移动应用程序时,我都会禁用即时运行。
我提到的是即时运行,因为它可能会在您忙于执行某些 I/O 操作时破坏您的应用程序。这对您来说还不错,但我建议您暂时不要使用即时运行进行测试和开发。如果没有即时运行,您可以保证在手机中安装完整编译的应用程序。这将或应该防止您将来出现此问题。
【讨论】:
以上是关于未知故障(cmd:调用服务包失败:Broken pipe (32))的主要内容,如果未能解决你的问题,请参考以下文章
服务器存储数据恢复华为OceanStor某型号存储raid5硬盘故障离线,热备盘同步数据失败导致raid崩溃的数据恢复案例