最近一直想用adb连接非root的android设备(小米2),来修改一些只有root权限才能修改的文章。可是第一步就遇到问题了,adb连不上小米---运行adb显示
-----
adb server is out of date. killing...
ADB server didn't ACK
* failed to start daemon *
error: unknown host service
-----
怎么回事呢。查询google,找到两条有用的信息
-----
1. 因为有另外一个应用占用了ADB SERVER的端口,也许是adb shell 本身,结束进程中的adb.exe并重新启动adb试试。。
(参考: http://zhidao.baidu.com/question/313582232.html)
2. 运行非daemon模式
adb nodaemon server
(参考: http://www.th7.cn/Program/Android/201304/134301.shtml)
-----
第一条,想想觉得很自然。很多PC程序都会在你接上手机的时候右下角弹窗提示你"已连接android设备",也许这样就会占用。
第二条呢,试试吧。一试果然发现第一条成立
----
can't bind 5037
----
我想这就是某个adb进程运行时占用的端口吧,找出来,关掉它。不就可以了吗。说干就干,这得用到netstat这个查看端口运行的命令
----
C:\>netstat -ano | findstr 5037
TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING 5596
TCP 127.0.0.1:5037 127.0.0.1:49508 ESTABLISHED 5596
TCP 127.0.0.1:5037 127.0.0.1:50671 TIME_WAIT 0
TCP 127.0.0.1:5037 127.0.0.1:50672 TIME_WAIT 0
TCP 127.0.0.1:5037 127.0.0.1:50673 TIME_WAIT 0
TCP 127.0.0.1:49508 127.0.0.1:5037 ESTABLISHED 2712
TCP xxx.xxxx.xxx..xxx:50374 xxx.xxxx.xxx..xxx0:443 ESTABLISHED 5600
----
呵呵,果然有,最后一列是进程,找到5596,并关掉它就可以了。先看看是什么东东
----
C:\>tasklist |findstr 5596
tadb.exe 5596 Console 1 5,784 K
----
果然是某个adb,唉。真让第一条,说对了。关掉它把
----
C:\taskkill /pid 5596 /f
----
成功: 已终止 PID 为 5596 的进程。
=============================
OK, 准备工作ok了,我们再运行一遍吧。
-------
F:\adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached
yourphoneid offline
f:\Android>adb devices
List of devices attached
yourphoneid device
f:\Android>adb shell
shell@android:/ $
================================
大功告成!^^