7C00.ME/houmu 2013-01-02

解决ADB启动问题

重装了系统,再用ADT(adt-bunlde-windows),总会出现ddms初始化错误,logcat也无法获取log,报错信息为:

Failed to initialize Monitor Thread: Unable to establish loopback connection

后来发现实际问题是无法启动adb进程,在命令行使用adb devices 就会有下面的报错信息:

  • daemon not running. starting it now on port 5037 * ADB server didn’t ACK
  • failed to start daemon * error: cannot connect to dae

网上给出了很多中解决办法,主要有一下几种:

  1. 关闭Windows防火墙;

  2. 关闭ipv6或设置ipv4偏好,具体为:在设 备管理器 ,显示隐藏设备,禁用 Teredo 开头的一个网络设备;在eclipse.ini文件增加(最后一行的参数);

    openFile -vmargs -Djava.net.preferIPv4Stack=true

  3. 关闭虚拟网卡(VMware、VirtualBox等创建的虚拟网络适配器);

我的先做了2,3两步,都没有成功,迫不得已做了1,结果问题解决了,ddms启动了,logcat滚动了。但是关闭防火墙终究不放心,再启动防火墙,问题却没有复现,实在诡异。但稳妥期间还是启动着防火墙,同时给防火墙增加一个例外的规则,如图:

规则很简单,就是允许端口在5037的所有通信,仍然有安全隐患,但总好于关闭防火墙。当然,还可以限制程序来减小安全风险。