我的AVD是API 15的,我不知道为什么,但下面的消息不断来了,每当我运行仿真器的应用程序。 它似乎并没有引起除了在控制台中的错误信息任何麻烦。
[2012-06-17 00:03:26 - ddmlib] Broken pipe
java.io.IOException: Broken pipe
at sun.nio.ch.FileDispatcher.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:122)
at sun.nio.ch.IOUtil.write(IOUtil.java:93)
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:352)
at com.android.ddmlib.JdwpPacket.writeAndConsume(JdwpPacket.java:213)
at com.android.ddmlib.Client.sendAndConsume(Client.java:575)
at com.android.ddmlib.HandleHeap.sendREAQ(HandleHeap.java:348)
at com.android.ddmlib.Client.requestAllocationStatus(Client.java:421)
at com.android.ddmlib.DeviceMonitor.createClient(DeviceMonitor.java:837)
at com.android.ddmlib.DeviceMonitor.openClient(DeviceMonitor.java:805)
at com.android.ddmlib.DeviceMonitor.processIncomingJdwpData(DeviceMonitor.java:765)
at com.android.ddmlib.DeviceMonitor.deviceClientMonitorLoop(DeviceMonitor.java:652)
at com.android.ddmlib.DeviceMonitor.access$100(DeviceMonitor.java:44)
at com.android.ddmlib.DeviceMonitor$3.run(DeviceMonitor.java:580)
可能是什么原因?
Answer 1:
如果有人使用Eclipse和Android的工作室一起,那么这个错误将被抛出日食。 所以,即使你选择通过DDMS的设备,其会抛出这个错误。
Answer 2:
老问题,但仍然具有现实意义,我并没有看到该信息的任何其他答案:
对我来说,当另一个Eclipse是在同一时间运行,与DDMS竞争在同一插座的日食试图连接到Android设备上发生的事情。
解决方法是关闭其它Eclipse。 希望它可以帮助别人。
更新 :可能是一个更好的解决方案是编辑其它Eclipse的DDMS口的东西你不使用。 因此,它退出了比赛。
Answer 3:
这发生在我身上时,我有两个monitor
和Eclipse ADT开放。 请尝试关闭所有的Android相关的东西,然后做一个adb kill-server && sleep 5 && adb devices
,然后(Eclipse中/ ANT / AS)重新启动您的工具。
Answer 4:
“断管”是指你写数据到已经被对关闭的连接。 解决方案:不要。 它本质上是一个应用协议错误。
Answer 5:
我想,在客户端(Eclipse中)与服务器(你的仿真器)通过管道协议进行通信(该协议是众所周知的在同一台机器上进行通信2个工序)。
通信信道有时被打破。 (有可能100+原因是什么)
要解决此问题:重新启动模拟器(AVD)。 也许你将不得不等待片刻(1分钟〜?)那么Eclipse可以恢复管通道和您的登录猫会回来。 否则,重新启动这两个的Eclipse和模拟器摆脱这种错误的。
Answer 6:
最常见的原因,我有一个“破管道”是一台机器(一对通过套接字通信)已关闭其插座端通信完成之前。 大约一半的人是因为插座上通信的程序已经终止。
如果程序发送的字节发送出来,并立即关闭插座或终止本身,它有可能已经被传输和读取之前的字节插座停止运行。
尝试把暂停任何地方,你要关闭的插座,你让之前的程序终止,看看是否有帮助。
FYI:“管”和“插座”是得到有时互换使用的术语。
Answer 7:
最近,我注意到了这个频繁发生(每5分钟左右)。 频率似乎增加,如果我有两个物理设备和仿真器上运行。
停止模拟器,只使用物理设备进行调试停止它经常发生的事情 - 现在我只看到过一次或两次。
要解决它,当它发生时,你不需要关闭模拟器或重新启动设备 - 转USB调试模式,然后再打开应该让亚洲开发银行再次出现。
Answer 8:
我一直在努力解决这个问题很长一段时间。 每当我想与Chrome的调试工具来调试Android手机应用程序,我断开了每5个mintutes。
我发现,这样做的原因是确实使用连接到移动电话中的操作系统,打破了手机和操作系统之间的通信落后于其他工艺。
我使用的MacBook Pro和我跑的IntelliJ IDEA调试器+ Android文件传输(不知道这是在后面跟着跑)和Chrome的调试工具。 当我关闭了“活动监视器”工具一切运作良好,手机和操作系统之间没有更多的Android断开文件传输过程。 我的建议是检查始终如果正在运行其他Android程序。
Answer 9:
我用的是同时在Android Studio和DDMS。 关闭DDMS解决了这个问题对我来说。
重新启动Android的工作室有没有影响。
Answer 10:
在任何情况下,其他人没有发现任何解决这个。 在日食霓虹灯,发生这种情况时,我曾在插件目录中的两个罐子DDMS。 我有andmore.ddms.jar和com.android_ddms.jar。 删除一个解决了错误,我想他们都竞相连接到同一个端口。
Answer 11:
Answer 12:
当插座连接是由客户端上的另一端关闭时,会发生“断管”异常。 在大多数情况下,这是没有什么可担心的。
Answer 13:
就我而言,我删除了.android在我的主目录。 没关系。
文章来源: what caused IOException and Broken pipe