一、問題描述
今天在Eclipse中運行Android項目時遇到"The connection to adb is down, and a severe error has occured"這個問題,如下圖所示:
第一次遇到這個問題,上網查了一下原因,原來"The connection to adb is down, and a severe error has occured"指的就是Android模擬器端口被占用了。
二、問題的排查過程
既然是端口被占用了,現在就要看看到底是誰占用了端口。
在sdk目錄下的platform-tools目錄中有一個adb.exe可執行程序,這個就是Android模擬器的啟動程序,如下圖所示:
打開CMD命令行窗口,進入sdk目錄下的platform-tools目錄,輸入命令:adb start-serevr,如下圖所示:
因為我在搭建Android開發環境時,已經將sdk目錄下的platform-tools目錄加入到Path環境變量中,如下:
所以我在cmd命令中直接輸入命令:adb start-serevr是可以正常運行的,不再需要進入到進入sdk目錄下的platform-tools目錄。
從上面的排查結果顯示來看,確實是端口被占用了,接下來需要確定被占用的端口號是多少,輸入命令:adb nodaemon server,如下圖所示:
OK,現在確定了,端口5037被占用了,那就要找到究竟是誰敢占用5037端口。
在cmd中輸入命令netstat -ano |findstr "5037",如下圖所示:
原來是5040這個進程占用了端口,我們要把這個進程找出來,在cmd中輸入命令tasklist /fi "pid eq 5040",如下:
OK,已經找到了,是一個名字為shuame_helper.exe,打開任務管理器,kill這個進程即可。