adb執行異常的故障排除
總結幾種adb執行么蛾子解決辦法,windows系統為例:
1.‘adb’不是內部或外部命令,也不是可執行的程式或批處理檔案。
這個簡單,沒有配置adb的環境變數,如果只用adb,把adb所在路徑加入系統環境變數。建議配置ANDROID_HOME變數,很多自動化工具如appium'會要求配置這個變數。
2.adb server is out of date. killing...
這種情況一般是因為當執行輸入的adb命令時,系統已經有其它版本的adb在運行了,adb執行會佔用5037埠,當執行新adb程序會報錯。
而且現在的各種手機助手滿天飛, QQ、360都自帶迷你版的手機助手,而且他們一般都是自己修改了adb,然後換個名字,比如叫xxadb、xxhelper,都是adb換了個馬甲。
解決辦法:
先命令列執行were adb,確認PC只配置了一個adb
命令列 輸入netstat -ano | findstr 5037,得到類似於以下的:
最後一列是程序號, 記錄下來 ,你的電腦可能有多行。
然後再輸入 tasklist | findstr 4348 (得到的程序號)
這樣就能找到誰在佔用了,用任務管理右擊這個程序,看看這個adb程序是不是你配置的那個,如果不是,結束刪掉,最好把這個adb的主程式(可能是360什麼的)也解除安裝。
3.明明有裝置總是提示device not found
1.裝置是否開啟了USB除錯並且連線了PC
2.adb驅動是否正確安裝,安裝成功後設備管理器應該能看到adb裝置。
如果以上確認無誤,嘗試手動新增裝置的硬體ID,步驟如下:
1.開啟裝置管理器,展開adb裝置。
2.右擊裝置,依次 "屬性“—”詳細資訊“,下拉框選擇”硬體ID“

圖中標記藍色的4位16進位制數就是VID號,記錄下來。
3.進入命令列,切換工作區到當前使用者。
命令列執行 pushd %USERPROFILE%
4.將步驟2得到的硬體ID新增到adb_usb.ini
命令列執行 echo 0x1234 >> .android\adb_usb.ini
注:1234是得到的硬體ID,0x是16進位制數字首。
adb_usb.ini也可以放在adb.exe的同級目錄下。
我現在用的是windows10 + adb1.0.39,貌似不需要adb_usb.ini了,也有可能是adb預設狀態下可以我司裝置了。
冷知識:早期的adb 識別冷門裝置通過adb -i xxxx start-server新增,adb程序執行中有效。
4.總是提示device offline。
1.一般情況下,如果裝置之前正常,那麼adb kill-server之後會恢復正常,再不行把裝置和PC都重啟。
2.另一個可能是adb版本過低,例如adb1.0.26不能相容android4.3以上裝置,這種情況下可以通過SDK Manager更新下adb的版本。
5.總是提示unauthorized.
1.adb kill-server,斷開裝置後重試。
2.在裝置的usb除錯選單中”撤銷USB除錯授權“
3.刪除%USERPROFILE%\.android目錄中的adbkey和adbkey.pub。刪除前注意備份。
4.更新adb的版本。