『與善仁』Appium基礎 — 4、常用ADB命令(一)

繁華似錦Fighting發表於2021-07-21

在上一篇文章中說明了ADB命令的使用方式:

  1. 使用ADB命令的前提是保證手機或者模擬器和電腦是連線狀態。
  2. 使用adb connect 127.0.0.1:+埠號命令,進行連結。

本篇文章詳細說明一下常用ADB命令的操作。

1、啟動和關閉ADB服務

在某些情況下,可能需要終止然後再啟動服務端程式,例如ADB不響應命令的時候,可以通過重啟解決問題。

開啟命令列終端執行命令:

  1. 啟動ADB服務,ADB命令: adb start-server
  2. 關閉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服務沒有任何提示。

image

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:沒有裝置/模擬器連線。

常見異常輸出

  1. 沒有裝置/模擬器連線成功。
    List of devices attached
    
  2. 裝置/模擬器未連線到 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

輸出裡的 cf264b8femulator-555410.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檔案是否接收到。

image

開啟檔案的內容也是一樣的。

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檔案。

注意:練習的時候,檔名儘量不要使用中文,可能測試效果不好。

參考:https://github.com/mzlogin/awesome-adb

相關文章