『與善仁』Appium基礎 — 4、常用ADB命令(一)
- 2021 年 7 月 21 日
- 筆記
- 測試基礎必會技能 - Appium測試框架
在上一篇文章中說明了ADB命令的使用方式:
- 使用ADB命令的前提是保證手機或者模擬器和電腦是連接狀態。
- 使用
adb connect 127.0.0.1:+埠號
命令,進行鏈接。
本篇文章詳細說明一下常用ADB命令的操作。
1、啟動和關閉ADB服務
在某些情況下,可能需要終止然後再啟動服務端進程,例如ADB不響應命令的時候,可以通過重啟解決問題。
開啟命令行終端執行命令:
- 啟動ADB服務,ADB命令:
adb start-server
。 - 關閉ADB服務,ADB命令:
adb kill-server
。
演示:
1)啟動ADB服務
C:\Users\L>adb start-server
* daemon not running; starting now at tcp:5037
* daemon started successfully
C:\Users\L>
提示:守護進程沒有開啟,現在通過5037埠開啟守護進程服務。
注意:
- ADB命令默認綁定埠為5037 ,若埠被別的應用綁定則無法啟動ADB服務。
- 一般無需手動執行此命令,在運行ADB命令時若發現
adb server
沒有啟動會自動調起。
2)關閉ADB服務
關閉ADB服務沒有任何提示。
2、查看ADB版本
ADB命令:adb version
C:\Users\L>adb version
Android Debug Bridge version 1.0.41
Version 29.0.6-6198805
Installed as F:\***\android-sdk-windows\platform-tools\adb.exe
C:\Users\L>
3、指定adb server的網路埠
ADB命令:adb -P <port> start-server
(臨時換一個埠號開啟ADB服務)
默認埠為 5037。
C:\Users\L>adb -P 5039 start-server
* daemon not running; starting now at tcp:5039
* daemon started successfully
C:\Users\L>
提示:
netstat -ano
查詢進程ID。taskkill /f /t /im 進程名
殺掉進程。
如:taskkill /f /t /im nginx.exe
4、查詢已連接設備/模擬器
ADB命令:adb devices
前提:Android模擬器已開啟。
演示:
(1)直接執行adb devices
命令
C:\Users\L>adb devices
* daemon not running; starting now at tcp:5037
* daemon started successfully
List of devices attached
C:\Users\L>
從上面可以看到,如果我們沒有啟動ADB服務,且直接執行adb devices
命令,會先自動幫我們開啟ADB服務,在執行adb devices
命令,結果沒有查詢到已鏈接的模擬器。
(2)使用ADB服務鏈接Android模擬器
執行命令adb connect 127.0.0.1:21503
(註:不同的模擬器的埠號不同)。
C:\Users\L> adb connect 127.0.0.1:21503
connected to 127.0.0.1:21503
C:\Users\L>
(3)再次執行adb devices
命令,查詢已連接設備
C:\Users\L>adb devices
List of devices attached
127.0.0.1:21503 device
C:\Users\L>
我們就可以看到ADB服務已經鏈接的設備了
說明:
輸出格式為
[serialNumber] [state]
。
serialNumber
即我們常說的SN
碼,state
有如下幾種:
offline
:表示設備未連接成功或無響應。device
:設備已連接。注意這個狀態並不能標識 Android 系統已經完全啟動和可操作,在設備啟動過程中設備實例就可連接到ADB,但啟動完畢後系統才處於可操作狀態。no device
:沒有設備/模擬器連接。
常見異常輸出:
- 沒有設備/模擬器連接成功。
List of devices attached
- 設備/模擬器未連接到 adb 或無響應。
List of devices attached cf264b8f offline
5、獲取Android系統版本
ADB命令:adb shell getprop ro.build.version.release
演示:
C:\Users\L>adb shell getprop ro.build.version.release
7.1.2
C:\Users\L>
6、為命令指定目標設備
如果有多個設備/模擬器連接,則需要為命令指定目標設備。
參數 | 含義 |
---|---|
-d |
指定當前唯一通過 USB 連接的 Android 設備為命令目標 |
-e |
指定當前唯一運行的模擬器為命令目標 |
-s <serialNumber> |
指定相應serialNumber 號的設備/模擬器為命令目標 |
在多個設備/模擬器連接的情況下較常用的是 -s <serialNumber>
參數,serialNumber
可以通過 adb devices
命令獲取。如:
$ adb devices
List of devices attached
cf264b8f device
emulator-5554 device
10.129.164.6:5555 device
輸出里的 cf264b8f
、emulator-5554
和 10.129.164.6:5555
即為serialNumber
。
比如這時想指定 cf264b8f
這個設備來運行ADB命令獲取螢幕解析度:
adb -s cf264b8f shell wm size
又如想給 10.129.164.6:5555
這個設備安裝應用(這種形式的 serialNumber
格式為 <IP>:<Port>
,一般為無線連接的設備或 Genymotion 等第三方 Android 模擬器):
adb -s 10.129.164.6:5555 install test.apk
遇到多設備/模擬器的情況均使用這幾個參數為命令指定目標設備
7、發送文件到手機
ADB命令:adb push 電腦端文件路徑\需要發送的文件(全名) /手機端存儲的路徑
提示:
- Android手機存儲卡的根目錄都是
sdcard
目錄。(固定死的) - 注意目錄中斜杠的方向。
示例:
將桌面的test.txt
文件發送到手機sdcard
目錄下。
C:\Users\L>adb push C:\Users\L\Desktop\test.txt /sdcard
C:\Users\L\Desktop\test.txt: 1 file pushed, 0 skipped. 0.0 MB/s (36 bytes in 0.003s)
C:\Users\L>
提示:我們可以把文件直接拖拽到命令行終端中,該文件的路徑和文件名會自動生成。
我們再到Android模擬器中的文件管理器查看test.txt
文件是否接收到。
打開文件的內容也是一樣的。
8、從手機拉取文件
ADB命令:adb pull 手機端的路徑/拉取文件名(全名) \電腦端存儲文件路徑
示例:
將手機/sdcard
目錄中的test.txt
文件,發送到電腦桌面
C:\Users\L>adb pull /sdcard/test.txt C:\Users\L\Desktop
/sdcard/test.txt: 1 file pulled, 0 skipped. 0.0 MB/s (36 bytes in 0.002s)
C:\Users\L>
桌面上會接收到test.txt
文件。
注意:練習的時候,文件名盡量不要使用中文,可能測試效果不好。