在上一篇文章中說明了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、獲取安卓系統版本
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
檔案。
注意:練習的時候,檔名儘量不要使用中文,可能測試效果不好。