解決adb報錯: adb server version (31) doesn’t match this client (36)
一.現象
在cmd命令視窗中,想檢視連線的夜神模擬器:adb devices,報錯: adb server version (31) doesn’t match this client (36)
如圖:

這是發現使用Studio 也是沒有發現這個模擬器裝置。
二.解決方法
解決的辦法不難,就是把現在SDK版本的adb.exe,覆蓋掉模擬器安裝檔案中的adb.exe(夜神模擬器的是nox_adb.exe),重啟模擬器就能解決問題了。
三.分析過程
這裡給大家分析一下這個錯誤,和具體的解決方法步驟,並且大家學到後,對於類似的錯誤也能解決(比如其他三方模擬器遇到這個問題)。
從報錯資訊可以看到,這裡報錯的提示意思是adb server 版本和client 的版本不一致造成的。
造成這樣的問題,一般是由於SDK版本更新了,導致和模擬器的adb版本不一致。
其實除錯橋adb是一個程式,就是電腦中可執行的exe檔案。
這裡adb server版本指的是模擬器中adb程式的版本
client 的版本指的是SDK中adb的程式版本
這裡檢視SDK的版本是非常容易的,輸入命令:adb version
檢視模擬器的版本就需要進入模擬器的安裝目錄中,找到adb所在的目錄,在該目錄下的命令視窗輸入命令adb version。
如圖所示:
左邊是SDK中adb的版本,右邊是模擬器中adb的版本

這裡能看到SDK中adb的版本是因為之前已經在電腦的高階設定中配置了path的路徑:
如圖:

SDK的adb程式是SDK目錄下的platform-tools資料夾內的。
夜神模擬器的adb在哪裡呢?
點選夜神程式右鍵,選中屬性,就可以看到夜神程式安裝的位置,adb也是在bin這個資料夾下的。

替換adb程式:

左邊是SDK中的adb程式,右邊是夜神模擬器的adb程式,把左邊的adb.exe複製到右邊,並且名字改為nox_adb.exe
這時,重新就可以連線模擬器了,並且Studio中連線也是沒有問題的。

一般要重啟模擬器。才有效。
上面是舉例夜神模擬器的,如果海馬模擬器出現這種問題也是一樣的解決方式:

找到SDK的adb程式替換到海馬中的adb程式。
四.其他,埠問題
如果模擬器端被佔用,有時報錯:daemon not running.starting it now on port 5037
網上有很多步驟教是kill掉佔用的程式,重啟模擬器就可以了。
但是我感覺還是比較麻煩,比較簡單的是修改埠:
在電腦高階系統設定,環境變數,新增屬性ANDROID_ADB_SERVER_PORT,並設定值(1000-50000)不要太大,也不要太小
如圖:

不過改變埠後,一般要重啟電腦才生效!
到這裡就給大家分享了一下adb使用過程可能會遇到的一個小問題。
adb命令在實際實際運用在是非常有用的:
比如從安裝/解除安裝apk、檢視手機配置,設定手機屬性,啟動/關閉某個程式都是可以的
如果有興趣看adb的命令可以看看:https://github.com/mzlogin/awesome-adb