1. 程式人生 > >關於adb shell 檢測不到手機的問題解決方案

關於adb shell 檢測不到手機的問題解決方案

日常測試中經常遇到電腦檢測不到裝置的問題,要嘛就是開發者沒有開啟,要嘛就是USB除錯沒有開啟,導致執行自動化和效能測試的時候經常會因為連不上裝置而執行用例失敗,報下面的錯誤型別還有可能其他各種錯誤:


百度上的方案有很多,上面這種情況其實不是百度上各種所說的5037埠被其他程式給佔用的情況,可就是連不上手機。我這裡給出自己的經驗有下面幾種方案可以試試:

方案一:

把ADB包D:\android-sdk\platform-tools裡面的4個檔案“adb.exe fastboot.exe AdbWinApi.dll AdbWinUsbApi.dll”複製到C:Windows\SysWOW64目錄下,再使用命令列執行ADB就可以了。(這是我所有方案裡唯一生效的方法,所以放在第一個哭

),也有人說把ADB下面的所有檔案都複製過去,我覺得沒必要。

方案二:

 就是百度上各種埠被佔用的情況,可以按照下面的步驟檢測:

1)先檢測你的5037埠被誰佔用,利用命令:netstat -ano | findstr "5037" (一般情況下adb預設埠號為5037)然後會彈出提示告訴你哪些程序佔用了該埠,記住非0地址的後面的數字

2)開啟工作管理員,點選“程序“,“檢視”-“選擇列”,勾選PID

3)查詢第2步中看到的數字PID,然後結束相關程序,也可以用命令的形式殺掉程序,cmd下輸入:tasklist | findstr “21152”:檢視這個程序是由哪個程式建立的(21152就是佔用5037埠的一個程序的PID); 然後執行:taskkill /f /pid 21152:將程序關掉; 

4) 最後adb kill-server,然後adb start-server,即可。

還有一種可能就是電腦上安裝了各種手機助手(豌豆莢、91助手、PP助手)這種軟體會佔用5037的埠,最好都解除安裝掉。很多情況這種助手都可以檢測連結裝置,但是adb devices就是檢測不到。

 另外還有一種方法解決埠被佔用的問題,那就是自定義一個adb的埠號:

二、自己配置 adbserver 埠,使用一個生僻的值。(以後adb埠號就是修改後的埠號)

1、在系統環境變數中定義 ANDROID_ADB_SERVER_PORT 的值即可。最好選擇一個5位數的埠號(10000 ~65535),不易重複。

2、win下需要在環境變數中增加一個ANDROID_ADB_SERVER_PORT,值填自己定義的埠。

3、linux下則要 export$ANDROID_ADB_SERVER_PORT = 自定義埠,即可。

方案三:

手機啟動了USB除錯,並且通過USB連線了電腦,就是沒有顯示出來,修adb_usb.ini檔案 的方法 

  1.         首先找到手機的安裝完之後的“裝置的硬體id”,第一步右擊我的電腦,然後找到裝置管理器開啟。   
  2. 找到你的模擬器存放的目錄,<例如:C:\Users\wb-jnyanjiao\.android

    >下找到或新建一個adb_usb.ini檔案。編輯該檔案,新增一行 0x12D1,(紅色字型的就是上面獲取的硬體id),儲存


  3. 在cmd上輸入adb kill-server 然後重新拔插usb線之後,就可以連線adb 了

方案四:(該方案適用於5037埠沒被佔用卻檢測不到裝置的情況)

1.輸入命令:adb nodaemon server,則dos頁面上顯示靜止,表示此命令正在執行。(adb nodaemon server:檢測5037埠是否被佔用;

2.再開啟一個新的dos命令列視窗cmd

3.輸入adb devices,成功顯示目前連線的裝置


方案五:

最難以想象的情況就是你的電腦裡到底安裝了多少個adb.exe  那就看下你的工作管理員裡啟動的是不是你要的那個;一臺電腦只需要一個adb,不需要重複拷貝;不然就會導致執行用例的時候eclipse或者idea報以下的錯誤(感覺就是一會連上去一會連不上去的樣子,最後執行失敗:



滑鼠右鍵-開啟檔案位置  


於是問題又來了ADT工具,adb工具,聯絡,區別,作用?

ADT:  詳解連結:https://www.cnblogs.com/crstyl/articles/6906571.html , ADT內含SDK管理,安卓虛擬裝置管理器

  安卓開發工具---Android  Develop Tool,是Eclipse的外掛,為Android開發提供開發工具的升級或者變更,簡單理解為在Eclipse下開發工具的升級下載工具。
  SDK(Software Development Kit)為特定的軟體包、為軟體框架、硬體平臺、作業系統等建立應用軟體的開發工具的集合。在Android中,他為開發者提供了庫檔案以及其他開發所用到的工具。簡單理解為開發工具包集合,
  ADB是與模擬器和裝置連線的工具。除了在EclipseADT外掛中的關鍵功能外,還可以可以在命令列中使用它來上傳和下載檔案,安裝和解除安裝軟體包,或通過shell並訪問裝置或模擬器上的許多其他功能。

參考連結1:http://blog.csdn.net/easy_gemini/article/details/36180399

參考連結2:http://blog.csdn.net/whurs/article/details/52857647