重装了系统,再用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的所有通信,仍然有安全隐患,但总好于关闭防火墙。当然,还可以限制程序来减小安全风险。