【轉】解決:adb 提示adb server version(31) doesn't match this client(41) 解決辦法


原文:https://blog.csdn.net/gufenchen/article/details/91383397

一、有時候我們用adb工具去連接安卓設備,或者模擬器的時候,會提示adb server version(31) doesn’t match this client(40)這樣的提示。如圖

 

 

 

提示的字面意思就是當前client版本40,與server端的版本不匹配,當前版本過高引起的。注意,這里的client就是你電腦已經安裝的adb程序的版本,而server,也就是你的服務端,將要connect的設備。網上說出現這種不匹配只要下載對應的adb版本重新替換你之前安裝的adb就行了,對應的android studio 路徑就是你的android sdk 目錄的platform-tools文件夾里面的adb.exe程序。

 

 然而事實上卻並非就解決問題。這是因為你的電腦安裝了,魯大師手機助手,360手機助手占用了adb的端口引起的。因為套接字的唯一性(一個套接字只能由 協議/網絡地址/端口號 唯一確定 ),一個電腦只能有一個程序關聯對應的端口,對於adb對應的端口就是5037。為了驗證你的5037端口是否被占用,可以用netstat -ano|findstr “5037” 去查找5037對應的端口號的進程id 也就是pid。

如果有相應的pid,就證明此端口5037有程序占用了。如下圖


果然,5037端口有相應的進程,我們試着去查找相應的進程對應的進程名稱,用tasklist |findstr “15828” 結果如下圖

 

 

 

果然,我們找到了一個進程名字,看名字似乎是ludash的拼音縮寫開頭的,這時候去檢查一下你電腦的運行程序,哎呦,還真有一個魯大師手機助手正在運行,就是它害的我們的adb運行不了,所以我們果斷打開進程管理器結束這個進程,如下圖。

 

 

 

 

 

單擊結束進程把它結束了,然后再運行adb connect server IP 成功運行。

我的是mibileLoader不能被禁用,刪除了還會恢復, 一直占用5037端口, 導致手機和電腦無法連接.
通過adb 調試手機都沒辦法進行了, 卸載360了. 

二、如果上面的還是不能解決:

每當我嘗試運行時adb devices:

$ adb devices
* daemon not running. starting it now *
* daemon started successfully *
List of devices attached
HT0ANRV05740 device
它說守護進程沒有運行並重新啟動守護進程。

然后,如果我再次運行adb設備,它會做同樣的事情 -

$ adb devices
adb server is out of date. killing...
* daemon started successfully *
List of devices attached
HT0ANRV05740 device
然后,如果我再次運行它,它再次做同樣的事情 -

$ adb devices
adb server is out of date. killing...
* daemon started successfully *
List of devices attached
HT0ANRV05740 device
從網上查到,需要在命令行運行以下shell命令獲取deviceName

adb devices -l
然而輸入回車后,出現以下錯誤

C:\Users\wuhuo>adb devices -l
adb server is out of date.  killing...
ADB server didn't ACK
* failed to start daemon *
error:
朋友叫我輸入adb start-server,結果是這樣嬸兒的

adb server is out of date.  killing...
ADB server didn't ACK
* failed to start daemon *

網上查了是因為端口有沖突,有其他進程占用了5037這個端口。(可以用adb nodaemon server 這個命令查看端口)


解決方法:

用以下命令查看5037端口號的應用

netstat -ano | find "5037"
從左至右依次是連接類型、本地地址:端口、外部地址:端口、連接狀態、進程的PID
個人理解,應該殺掉的是本地端口為5037的那個進程。(20170319注:看過多個別人殺進程的帖子,證實想法正確)

看最后一列獲得進程的PID,常規方法是使用以下命令殺掉它:

taskkill /pid xxx
但對於我的情況來說,殺完再find,它又出現了,喵喵喵?而且再細看一下,這些進程全部都是genymotion目錄中tools文件夾下的adb.exe,按我的理解不該殺啊。

(20170320注:實際上很多軟件都包括adb.exe,像豌豆莢及各種手機助手。如果它們啟動了,也會占用這個端口。信息來自網上找到appium視頻教程)

因為已經深夜了,第二天繼續研究。今日查到stackoverflow上一個帖子:

http://stackoverflow.com/questions/5092542/adb-server-is-out-of-date

答主真是一針見血。。把genymotion的adb設置為自己的adb之后,問題解決了。

Genymotion默認用的是第一個選項,現改為custom,然后選擇自己的sdk文件夾

 

 


選擇Setting,

找到ADB,點擊

 

 

 

 

 

 

選擇第二個:Customer Android SDK tools:,選擇SDK的文件夾,

 

 

 

再輸入adb devices -l,

 

 


————————————————
版權聲明:本文為CSDN博主「白清羽」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/gufenchen/article/details/91383397


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM