A. 干貨|做App測試,那些必知必會的Adb常用命令
> 本文節選自霍格沃茲測試學院內部教材
為了讓大家更好的學習Adb常用命令,我們先從安裝android環境搭建開始講解哦。
安裝jdk
### **
**
**
**
### 因為 Android SDK 是依賴於 java 環境的,所以需要先把 java 的環境搭建好。Java
環境可以參考搭建帖子:https://ceshiren.com/t/topic/4001
安裝Android SDK
###
###
### adb 包含在 Android SDK 平台工具軟體包中。具體的 Android SDK
環境搭建步驟請參考帖子:https://ceshiren.com/t/topic/4001
adb簡介
adb 全稱為 Android Debug Bridge(Android 調試橋),是 Android SDK 中提供的用於管理 Android
模擬器或真機的工具。
adb 是一種功能強大的命令行工具,可讓 PC 端與 Android 設備進行通信。adb 命令可執行各種設備操作,例如安裝和調試應用。
adb組成
採用了客戶端-伺服器(C/S)模型,包括三個部分:
* adb client
* adb server
* adb daemon
ADB client:運行在電腦上,可以在命令行中運行 adb 命令來調用該客戶端。Client 本質上就是 Shell,用來發送命令給
Server。發送命令時,首先檢測 PC 上有沒有啟動 Server,如果沒有 Server,則會自動啟動一個,然後將命令發送到 Server。
ADB server:是運行在電腦上的後台進程,用於管理客戶端與運行在模擬器或真機的守護進程通信。
ADB Daemon:守護進程作為一個後台進程在 Android 設備或模擬器系統中運行。它的作用是連接 adb 服務端,並且為運行在主機上的 adb
客戶端提供一些服務。
adb工作原理
當 adb 客戶端啟動時,客戶端會先檢查 adb 服務端是否啟動。如果沒有,會先啟動服務端進程。adb 服務端在啟動後,會與 5037 埠綁定,並監聽
adb 客戶端發出的命令。
然後,服務端會與所有正在運行的 Android 設備建立連接。它通過掃描 5555 到 5585 之間的奇數號埠查找 Android 設備。服務端一旦發現
Android 設備上的 adb 守護進程在運行,便會與相應的埠建立連接。每個 Android 設備都使用一對埠,偶數埠用於控制台連接,奇數埠用於
adb 連接。
例如:服務端與所有 Android 設備建立連接後,就可以使用 adb 命令來訪問這些設備了。服務端會管理已經建立的連接,並處理來自 adb 客戶端的命令。
啟動adb調試
### Android 真機可以通過 USB 連接到 adb,連接時需要在設備的系統設置中啟用 USB 調試(位於開發者選項下),啟動 USB
調試後,設備上的 adb 守護進程就會被啟動,adb 服務端才可以和設備建立連接。除了用 USB 的方式連接之外,也可以通過 WLAN
的方式連接,這種方式不做贅述。
1. 模擬器:不需要手動設置 USB 調試開關,默認是打開的
2. 真機通過 USB 連接
* 安裝 Android 手機驅動
* 設備啟用 USB 調試
adb命令格式
*
adb [-d|-e|-s <serialNumber>] <command>
* -d:指定當前唯一通過 USB 連接的 Android 設備為命令目標
* -e:指定當前唯一運行的模擬器為命令目標
* -s:指定相應 serialNumber 號的設備/模擬器為命令目標
方括弧中的內容是可選的,尖括弧內容的是必填的。方括弧中參數可以指定設備,關於設備的指定有三個參數可以使用。-d、-e 和 -s,其中使用最多的是 -s
參數,在連接多台設備的時候,一般都是使用 -s 加上設備的序列號這種方式去指定具體設備。
adb 可以同時連接多台設備,但是一次只能對一台設備執行命令。所有連接多台設備的時候,是必須要制定設備,命令才可以執行成功的。
查詢設備
把 Android 設備連接到 adb 服務端後,需要確認設備的連接狀態。這時可以使用查詢命令進行查詢。
**連接模擬器** (以 mumu 模擬器為例)
* *
adb connect 127.0.0.1:7555adb devices
* `adb connect` 命令可以通過 WLAN 的方式連接到模擬器,7555 為 mumu 模擬器的埠
* `adb devices` 可以查詢設備連接的狀態
Windows 系統中,連接模擬器需要先執行 connect 命令去連接模擬器,127.0.0.1 是本地的 IP
地址,因為模擬器就是安裝在本地的,所以要使用本地的 IP 地址,加上模擬器本身規定的一個埠號。mumu 的埠號是
7555,如果使用的是其他的模擬器的話,需要先去了解它的埠號是什麼,然後再去連接。MacOS 系統中連接模擬器不需要先執行 connect 命令,直接執行
`adb devices` 命令即可。
**連接真機**
**
**
真機直接用 USB 連接到電腦,不需要執行 connect 命令。
直接用 `adb devices`命令查看已經連接的設備列表即可。
feier@ ~ % adb devices
List of devices attached
emulator-5554 device
直接命令後,如果設備已經成功連接,那麼設備列表中就會展示已連接設備的信息。以圖中的信息為例:
* emualotr-5554:設備序列號
* device:設備連接狀態為成功
安裝卸載應用
測試過程中,如果需要安裝或者卸載應用,可以直接用 adb 命令來操作。
* 普通安裝:`adb install <apk路徑>`
* 覆蓋安裝:`adb install -r <apk路徑>`
* 完全卸載:`adb uninstall <包名>`
* 保留配置文件:`adb uninstall -k <包名> `
設備與電腦傳輸文件
adb 命令支持電腦和 Android 設備之間的文件互傳。比如我們需要提取 Android 設備中的日誌文件到本地,就可以通過 adb 命令的方式來完成。
* 從電腦上傳文件至設備:`adb push <電腦路徑> <設備路徑>`
* 從設備復制文件至電腦:`adb pull <設備路徑> <電腦路徑>`
日誌
列印鏈接設備的 log 信息
* 屏幕輸出日誌:`adb logcat`
* 通過標簽過濾:`adb logcat -s 標簽`
* 顯示時間:`adb logcat -v time`
* 輸出所有信息:`adb logcat -v long`
* 輸出日誌到文件:`adb logcat -v time > log.txt`
* 清除舊日誌信息:`adb logcat -c`
adb shell命令
使用 adb shell 命令相當於遠程登錄了 Android 系統,可以進入 Android 設備的系統內部。進入系統內部既可以執行一些簡單的 Linux
命令也支持很多特有的命令。
使用 adb shell 命令有兩種方式。
一種是直接在 adb shell 後面跟上命令。
*
adb [-s serial_number] shell <command>
比如:
* * * * * * * * * * *
feier@ ~ % adb shell .propdevetc...
另一種方式是在設備上啟動互動式 shell
*
adb [-s serial_number] shell
進入 shell 之後,再執行對應的命令。
比如我們進入設備內部,可以查看設備內部的目錄結構和內容
* * * * * * * * * * *
feier@ ~ % adb shellroot@x86:/ # .propdev...
要退出互動式 shell,可以按 Ctrl + D 鍵或輸入 exit。
**Android常用測試命令**
下面整理出了Android常用的一些測試命令及用法。
設備截圖/錄屏
在測試過程中,如果需要截圖或者是錄屏,也可以直接使用 adb 命令來完成。
* 截圖:`adb shell screencap <設備路徑>`
* 錄屏:`adb shell screenrecord <設備路徑>`
調用Activity管理器
在 adb shell 中,可以使用 Activity 管理器 (am) 工具發出命令以執行各種系統操作,如啟動
Activity、強行停止進程、修改設備屏幕屬性,等等。
在測試過程中,如果需要啟動 app 或者強制關閉 app,可以通過 adb 命令來實現。
* 啟動應用:`adb shell am start -n <包名>/<Activity名>`
* 強制停止應用:`adb shell am force-stop <包名>`
調用軟體包管理器
在 adb shell 中,可以使用軟體包管理器 (pm) 工具發出命令,以對設備上安裝的應用軟體包執行操作和查詢。
如果需要查詢設備里都安裝了什麼應用,就可以使用 adb shell pm list 來查看,還可以加上不同的參數去查看不同類型的應用。而且也可以通過 adb
命令來清除應用相關的數據。
* 顯示設備中安裝的所有應用:`adb shell pm list packages`
* 只顯示系統應用:`adb shell pm list packages -s`
* 只顯示第三方應用:`adb shell pm list packages -3`
* 刪除與軟體包關聯的所有數據:`adb shell pm clear <包名>`
adb shell mpsys
mpsys 是一種在 Android 設備上運行的工具,可提供有關系統服務的信息。可以使用 adb 從命令行調用
mpsys,獲取在連接的設備上運行的所有系統服務的診斷輸出。
比如在測試中,如果需要通過 adb 命令啟動 app,則需要知道 app 的包名和入口的 Activity
名。這個時候,就可以通過下面這條命令獲取到這兩個信息。
這個場景,需要先把要獲取信息的應用啟動,讓它在前台運行,然後執行命令
`adb shell mpsys activity | grep mFocusedActivity`
* * *
feier@ ~ % adb shell mpsys activity | grep mFocusedActivity mFocusedActivity: ActivityRecord{9dae968 u0 com.xueqiu.android/.common.MainActivity t139}
下方的日誌中就會展示出來當前的包名和 Activity 名稱。
* 包名:`com.xueqiu.android`
* Activity 名:`.common.MainActivity`
adb shell mpsys
adb 命令還支持直接獲取應用的頁面信息。這個頁面信息包含了頁面中元素的屬性,可以方便做自動化測試的時候去定位元素。獲取到的頁面布局會輸出到一個 xml
文件中。
* 當前窗口的 UI 布局簡化信息:`adb shell uiautomator mp --compressed`
* *
feier@ ~ % adb shell uiautomator mp --compressedUI hierchary mped to: /sdcard/window_mp.xml
不指定輸出文件路徑時,mp 下來的文件默認存儲路徑為 `/sdcard/window_mp.xml`
可以通過 adb pull 命令把文件傳輸到電腦中,然後用 uiautomatorviewer 工具打開查看布局。
* 指定輸出文件路徑:`adb shell uiautomator mp file <設備路徑>`
adb常用命令就先講到這里啦,下期我們分享App常見bug解析。大家還想看什麼內容的文章也可以留言告訴我們哦!
** _
來霍格沃茲測試開發學社,學習更多軟體測試與測試開發的進階技術,知識點涵蓋web自動化測試 app自動化測試、介面自動化測試、測試框架、性能測試、安全測試、持續集成/持續交付/DevOps,測試左移、測試右移、精準測試、測試平台開發、測試管理等內容,課程技術涵蓋bash、pytest、junit、selenium、appium、postman、requests、httprunner、jmeter、jenkins、docker、k8s、elk、sonarqube、jacoco、jvm-sandbox等相關技術,全面提升測試開發工程師的技術實力
QQ交流群:484590337
公眾號 TestingStudio
視頻資料領取:https://qrcode.testing-studio.com/f?from=jianshu&url=https://ceshiren.com/t/topic/15844
點擊查看更多信息
B. 常用的adb命令
Android Debug Bridge,我們一般簡稱為adb,主要存放在sdk安裝目錄下的platform-tools文件夾中,它是一個非常強大的命令行工具,通過這個工具你能夠與你的android設備進行交互,被稱為Android 調試橋。
它是一種客戶端-伺服器程序,包括以下三個組件:
adb shell 命令
adb shell 則是調用的 Android 系統中的命令,這些 Android 特有的命令都放在了 Android 設備的 system/bin 目錄下
monkey命令
當您啟動某個 adb 客戶端時,該客戶端會先檢查是否有 adb 伺服器進程正在運行。如果沒有,它會啟動伺服器進程。伺服器在啟動後會與本地 TCP 埠 5037 綁定,並監聽 adb 客戶端發出的命令 - 所有 adb 客戶端均通過埠 5037 與 adb 伺服器通信。
然後,伺服器會與所有正在運行的設備建立連接。它通過掃描 5555 到 5585 之間(該范圍供前 16 個模擬器使用)的奇數號埠查找模擬器。伺服器一旦發現 adb 守護程序 (adbd),便會與相應的埠建立連接。請注意,每個模擬器都使用一對按順序排列的埠 - 用於控制台連接的偶數號埠和用於 adb 連接的奇數號埠。例如:
模擬器 1,控制台:5554
模擬器 1,adb:5555
模擬器 2,控制台:5556
模擬器 2,adb:5557
依此類推
如上所示,在埠 5555 處與 adb 連接的模擬器與控制台監聽埠為 5554 的模擬器是同一個。
伺服器與所有設備均建立連接後,您便可以使用 adb 命令訪問這些設備。由於伺服器管理與設備的連接,並處理來自多個 adb 客戶端的命令,因此您可以從任意客戶端(或從某個腳本)控制任意設備。
要在通過 USB 連接的設備上使用 adb,您必須在設備的系統設置中啟用 USB 調試 (位於 開發者選項 下)。
在搭載 Android 4.2 及更高版本的設備上,「開發者選項」屏幕默認情況下處於隱藏狀態。如需將其顯示出來,請依次轉到 設置 > 關於手機 ,然後點按 版本號 七次。返回上一屏幕,在底部可以找到 開發者選項 。
在某些設備上,「開發者選項」屏幕所在的位置或名稱可能有所不同。
執行 adb devices 驗證設備是否已連接。如果已連接,您將看到設備名稱以「設備」形式列出。
一般情況下,adb 通過 USB 與設備進行通信,但您也可以在通過 USB 完成一些初始設置後,通過 WLAN 使用 adb,如下所述。
如果 adb 連接斷開:
如果有多個設備在運行,您在發出 adb 命令時必須指定目標設備。為此,請使用 devices 命令獲取目標設備的序列號。獲得序列號後,請結合使用 -s 選項與 adb 命令來指定序列號。如果您要發出很多 adb 命令,可以將 $ANDROID_SERIAL 環境變數設為包含序列號。如果您同時使用 -s 和 $ANDROID_SERIAL , -s 會替換 $ANDROID_SERIAL 。
$ adb -s emulator-5555 install helloWorld.apk
注意 :如果您在多個設備可用時發出命令但未指定目標設備,adb 會生成錯誤。
如果有多個可用設備,但只有一個是模擬器,請使用 -e 選項將命令發送至該模擬器。同樣,如果有多個設備,但只連接了一個硬體設備,請使用 -d 選項將命令發送至該硬體設備。
使用 forward 命令設置任意埠轉發,將特定主機埠上的請求轉發到設備上的其他埠。以下示例設置了主機埠 6100 到設備埠 7100 的轉發:
>adb forward tcp:6100 tcp:7100
您可以使用 pull 和 push 命令將文件復制到設備或從設備復制文件。與 install 命令(僅將 APK 文件復制到特定位置)不同,使用 pull 和 push 命令可將任意目錄和文件復制到設備中的任何位置。
如需從設備中復制某個文件或目錄(及其子目錄),請使用以下命令:
adb pull remote local
如需將某個文件或目錄(及其子目錄)復制到設備,請使用以下命令:
adb push loca remote
adb kill-server
您可以使用 shell 命令通過 adb 發出設備命令,也可以啟動互動式 shell。如需發出單個命令,請使用 shell 命令,如下所示:
adb [-d |-e | -s shell shell_command
在 adb shell 中,您可以使用 Activity 管理器 ( am ) 工具發出命令以執行各種系統操作,如啟動 Activity、強行停止進程、廣播 intent、修改設備屏幕屬性,等等。在 shell 中,相應的語法為:
您也可以直接從 adb 發出 Activity 管理器命令,無需進入遠程 shell。例如:
adb shell am start -a android.intent.action.VIEW
C. 實戰——Androidadb常用命令詳解
ADB 全稱Android Debug Bridge 是一個功能非常強大的工具,它位於Android SDK安裝目錄的platform-tools 子目錄下,ADB工具即可完成模擬器文件與電腦文件的相互復制,也可安裝APK應用,甚至可以直接切換到Android系統中執行部分Linux命令
1、查看當前運行的模擬器,設備:
adb devices
2、切換adb shell終端為root用戶:
adb root
3、鏈接adb tcp介面或者usb串口:
adb connect 192.168.10.252:5555 (tcp 5555埠)
adb connect 93048d8f
4、啟動shell
adb -s 192.168.10.252:5555 shell
如果adb devices 下只有一個設備則只櫻型需要:
adb shell 即可
5、安裝apk文件
adb -s 192.168.10.252:5555 install [-r] [-s] [-t]<file>
-r 強制安裝
-s 標示將APK包安裝到SD卡上 默認是將APK安裝到內部存儲器上
-t 如果 團返 報錯 Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI] 可以使用該參數
6、卸載apk
adb uninstall [-k] <package>
-k 標示只刪除該應用程序,但保留該程序素有的數據和緩存目錄。
7、重新掛載文件系統,用來可以讀寫system等目錄
adb -s 192.168.10.252:5555 remount
or
mount -o remount rw/dev/block/mtdblock0/system /
8、復制文件到手機
adb push a.txt /sdcard/
9、拷貝文件到電腦
adb pull /sdcard/xyz.txt d:/
10、重啟設備
adb -s 192.168.10.252:5555 reboot
11、重啟設備到bootloader模式
adb -s 192.168.10.252:5555 reboot bootloader
12、啟動指定的app的頁面
adb -s 192.168.10.252:5555 shell am start -n com.android.settings/.Settings
com.android.settings 應用程序的包名
.Settings 類名(Activity)
13、模擬點擊坐標
adb -s 10.0.0.245:5555 shell input tap 250 500
x:250 px Y:500 px
14、滑動觸摸事件
adb -s 10.0.0.245:5555 shell input swipe 200 500 400 500
#向右滑塌頌飢動200像素
15、修改屏幕尺寸
adb -s 10.0.0.245:5555 wm size 1080x1920
#修改屏幕尺寸為1080x1920
adb -s 10.0.0.245:5555 wm size
#查看屏幕默認尺寸
D. 如何通過PC端連接Android設備進行adb調試
在電腦上下個adb工具包安裝附加Google服務的,然後u *** 調試,電腦鍵盤win加r,然後後面的過程網上有教程
adb是什麼?adb有什麼用?adb工具如何用? 是用來管理模擬器和真機的通用調試工具,該工具功能強大,直接打開cmd即可使用adb命令,adb的全稱為Android Debug Bridge,是起到調試橋的作用,通過adb我們可以在Eclipse中方面通過DDMS來調試Android程序,說白了就是debug工具,adb的工作方式比較特殊,採用**Socket TCP 5554等埠的方式讓IDE和Qemu通訊,默認情況下adb會daemon相關的網路埠,所以當返盯我們運行Eclipse時adb進程就會自動運行,藉助adb工具我們可以管理設備或手機模擬器的狀態,還可以進行很多手機操作,如安裝軟體、系統升級、運行shell命令等等,其實簡而言說,adb就是連接Android手機與PC端的橋梁,可以舉游讓用戶在電腦上對手機進行全面的操作 二:ADB的主要功能有哪些? 1:查看當前模擬器或者Android設備實例的狀態 一般在使用前都會使用adb devices這個命令查看一下模擬器的狀態,通過這個命令得到ADB的回應信息,可以看到ADB作為回應為每個實例制定了相關的信息 1.1:emulator-5554為實例名稱 1.2:device為實例連接狀態,device表示此實例正與adb相連接,offline表示此實例沒有與adb連接或者無法響應 2:安裝和卸載APK應用程序 你可以從電腦上復制一個APK應用到模擬器或者Android設備上,通過adb install <path_to_apk>安裝軟體,adb uninstall <packageName>卸載軟體,如果你不知道這個包名,在AndroidManifest.xml里的找package=""就可以了 2.1: 先把apk文件拷貝到sdk目錄下的tools 2.2: 進入dos下切換到SDK的安裝路徑下的tools目錄 2.3 :執行安裝命令 adb install <path_to_apk> 發生的錯誤,因為我連接了真機,而且也打開了模擬器,所以adb給我的回應信息是「比一個多的驅動設備和模擬器」,我最後關閉掉了模擬器在運行安裝命令,就提示安裝成功了 卸載APK 3:從本機上復制文件到模擬器或者Android設備 adb push <本地路徑><遠程路徑>,<本地路徑>指的是自己的機器上或者模擬器上的目標文件,<遠程路徑>指的是遠程設備實例上的目標文件 4:從模擬器復制文件到模擬器或者Android設備 adb pull <遠程路徑><本地路徑>,<本地路徑>指的是自己的機器上或者模擬器上的目標文件,<遠程路徑>指的是遠程設備實例上的目標文件 5:使用shell命令 輸入adb shell就可以進入shell命令行了,可以使用一些常用的shell命令,如:ls命令列出了文件
首先講講Android設備,大家都知道開發用的最多的Android設備就是手機了,今天主要講兩個Android設備的adb連接調試,一個是手機,一個是電視機頂盒。
一:手機端的adb調試
首先保證手機跟電腦處於同一個無線網
手機的IP地址查詢:設置–關於手機–狀態信息,就可以看到路由器分給手機的IP地址了,接下來就是adb調試
如果想利用gdb工具來調試程序,在編譯程序時要正世銷使用-g選項。如:
debian:~/c# g -g serial.c -o serial
調試serial程序。
debian:~/c# gdb serial
1.首先讓android手機來監聽指定的埠:
這一步需要使用shell,因此手機上要有終端模擬器,不過網上很多,隨便找個就行了,依次敲入下列幾行:
su獲取root許可權
setprop service.adb.tcp.port 5555設置監聽的埠,埠可以自定義,如5554,5555是默認的
s adbd關閉adbd
start adbd重新啟動adbd2.
手機連接wifi並確保手機和電腦連接同一個網路
,記下手機的ip地址,假設為a.b.c.d
3.電腦上打開命令提示符,敲入以下命令:
利用adb來連接手機, 有兩種方式: 1, wifi, 2, u *** .
前提條件: 下載adb, 最好把對應的文件置於cmd.exe同目錄下。
1. 通過wifi, 利用adb來連接手機。
在pc的cmd中輸入命令:
adb connect 192.168.1.100
其中adb就是手機的ip. 如果連接成功, 就可以進入android的shell了。
2. 通過u *** , 利用adb來連接手機。
我把手機通過u *** 接上pc, 結果adb並沒有連接上手機, 於是下載了android驅動程序, 安裝了, 就好了。這樣, adb就連接上了手機, 開心啊。於是就可以利用adb shell進入手機的android系統了
首先安裝手機驅動,然後下載adb工具箱 命令提示符進入目錄 adb shell
E. 在android代碼里怎麼執行adb命令
Android中執行adb shell命令的方式如下: /** * 執行一個shell命令,並返回字元串值 * * @param cmd * 命令名稱&參數組成的數組(例如:{"/system/bin/cat", "/proc/version"}) * @param workdirectory * 命令執行路徑(例如:"system/bin/") * @return 執行結果組成的字元串 * @throws IOException */ public static synchronized String run(String[] cmd, String workdirectory) throws IOException { StringBuffer result = new StringBuffer(); try { // 創建操作系統進程(也可以由Runtime.exec()啟動) // Runtime runtime = Runtime.getRuntime(); // Process proc = runtime.exec(cmd); // InputStream inputstream = proc.getInputStream(); ProcessBuilder builder = new ProcessBuilder(cmd); InputStream in = null; // 設置一個路徑(絕對路徑了就不一定需要) if (workdirectory != null) { // 設置工作目錄(同上) builder.directory(new File(workdirectory)); // 合並標准錯誤和標准輸出 builder.redirectErrorStream(true); // 啟動一個新進程 Process process = builder.start(); // 讀取進程標准輸出流 in = process.getInputStream(); byte[] re = new byte[1024]; while (in.read(re) != -1) { result = result.append(new String(re)); } } // 關閉輸入流 if (in != null) { in.close(); } } catch (Exception ex) { ex.printStackTrace(); } return result.toString(); }
F. 技術分享 | App測試時常用的adb命令你都掌握了哪些呢
adb 全稱為 Android Debug Bridge(Android 調試橋),是 Android SDK 中提供的用於管理 Android 模擬器或真機的工具。
adb 是一種功能強大的命令行工具,可讓 PC 端與 Android 設備進行通信。adb 命令可執行各種設備操作,例如安裝和調試應用。
採用了客戶端-伺服器(C/S)模型,包括三個部分:
當 adb 客戶端啟動時,客戶端會先檢查 adb 服務端是否啟動。如果沒有,會先啟動服務端進程。adb 服務端在啟動後,會與 5037 埠綁定,並監聽 adb 客戶端發出的命令。
然後服務端會與所有正在運行的 Android 設備建立連接。它通過掃描 5555 到 5585 之間的奇數號埠查找 Android 設備。服務端一旦發現 Android 設備上的 adb 守護進程在運行,便會與相應的埠建立連接。每個 Android 設備都使用一對埠,偶數埠用於控制台連接,奇數埠用於 adb 連接。
服務端與所有 Android 設備建立連接後,就可以使用 adb 命令來訪問這些設備了。服務端會管理已經建立的連接,並處理來自 adb 客戶端的命令。
Android 真機可以通過 USB 連接到 adb,連接時需要在設備的系統設置中啟用 USB 調試(位於開發者選項下),啟動 USB 調試後,設備上的 adb 守護進程就會被啟動,adb 服務端才可以和設備建立連接。除了用 USB 的方式連接之外,也可以通過 WLAN 的方式連接,這種方式不做贅述。
方括弧中的內容是可選的,尖括弧內容的是必填的。方括弧中參數可以指定設備,關於設備的指定有三個參數可以使用。-d、-e 和 -s,其中使用最多的是 -s 參數,在連接多台設備的時候,一般都是使用 -s 加上設備的序列號這種方式去指定具體設備。
adb 可以同時連接多台設備,但是一次只能對一台設備執行命令。所有連接多台設備的時候,是必須要制定設備,命令才可以執行成功的。
把 Android 設備連接到 adb 服務端後,需要確認設備的連接狀態。這時可以使用查詢命令進行查詢。
Windows 系統中,連接模擬器需要先執行 connect 命令去連接模擬器,127.0.0.1 是本地的 IP 地址,因為模擬器就是安裝在本地的,所以要使用本地的 IP 地址,加上模擬器本身規定的一個埠號。mumu 的埠號是 7555,如果使用的是其他的模擬器的話,需要先去了解它的埠號是什麼,然後再去連接。MacOS 系統中連接模擬器不需要先執行 connect 命令,直接執行 adb kill-server && adb devices 命令即可。
真機直接用 USB 連接到電腦,不需要執行 connect 命令。
直接用 adb devices 命令查看已經連接的設備列表即可。
直接命令後,如果設備已經成功連接,那麼設備列表中就會展示已連接設備的信息。
測試過程中,如果需要安裝或者卸載應用,可以直接用 adb 命令來操作。
adb 命令支持電腦和 Android 設備之間的文件互傳。比如要提取 Android 設備中的日誌文件到本地,就可以通過 adb 命令的方式來完成。
列印鏈接設備的 log 信息
使用 adb shell 命令相當於遠程登錄了 Android 系統,可以進入 Android 設備的系統內部。進入系統內部既可以執行一些簡單的 Linux 命令也支持很多特有的命令。
使用 adb shell 命令有兩種方式。
一種是直接在 adb shell 後面跟上命令。
比如:
另一種方式是在設備上啟動互動式 shell
進入 shell 之後,再執行對應的命令。
比如進入設備內部,可以查看設備內部的目錄結構和內容
要退出互動式 shell,可以按 Ctrl + D 鍵或輸入 exit。
在測試過程中,如果需要截圖或者是錄屏,也可以直接使用 adb 命令來完成。
在 adb shell 中,可以使用 Activity 管理器 (am) 工具發出命令以執行各種系統操作,如啟動 Activity、強行停止進程、修改設備屏幕屬性,等等。
在測試過程中,如果需要啟動 app 或者強制關閉 app,可以通過 adb 命令來實現。
在 adb shell 中,可以使用軟體包管理器 (pm) 工具發出命令,以對設備上安裝的應用軟體包執行操作和查詢。
如果需要查詢設備里都安裝了什麼應用,就可以使用 adb shell pm list 來查看,還可以加上不同的參數去查看不同類型的應用。而且也可以通過 adb 命令來清除應用相關的數據。
mpsys 是一種在 Android 設備上運行的工具,可提供有關系統服務的信息。可以使用 adb 從命令行調用 mpsys,獲取在連接的設備上運行的所有系統服務的診斷輸出。
比如在測試中,如果需要通過 adb 命令啟動 app,則需要知道 app 的包名和入口的 Activity 名。這個時候,就可以通過下面這條命令獲取到這兩個信息。
這個場景,需要先把要獲取信息的應用啟動,讓它在前台運行,然後執行命令
adb shell mpsys activity | grep mFocusedActivity
下方的日誌中就會展示出來當前的包名和 Activity 名稱。
adb 命令還支持直接獲取應用的頁面信息。這個頁面信息包含了頁面中元素的屬性,可以方便做自動化測試的時候去定位元素。獲取到的頁面布局會輸出到一個 xml 文件中。
不指定輸出文件路徑時,mp 下來的文件默認存儲路徑為 /sdcard/window_mp.xml
可以通過 adb pull 命令把文件傳輸到電腦中,然後用 uiautomatorviewer 工具打開查看布局。
你好呀,喜歡這篇文章的話煩請點個「贊」哦!萬分感謝~( ▽ ) PS:有問題可以聯系我們哦~v ceshiren001
G. Android常用的ADB命令
重啟:adb reboot
推文件:adb push E:\xxx.txt storage/sdcard
拉文件:adb push storage/sdcard .
將日誌保存到電腦文件: adb logcat > xxx. xxx電腦文本地址
清除指定應用的數據和緩存:adb shell pm clear 例:adb shell pm clear com.yzl.test
查看日誌緩沖區大小:adb shell logcat-g
設置日誌緩沖區大小:adb logcat-G10M
打開藍牙:adb shell svc bluetooth enable
關閉藍牙:adb shell svc bluetooth disable
查詢藍牙是否打開:adb shell settingsgetglobalbluetooth_on
獲取藍牙Mac地址:adb shell settingsgetsecure bluetooth_address
獲取某個包名的安裝路徑:adb shell pm path com.xx.xx
查看所有存活的進程:adb shell ps
過濾關鍵字查看adb shell ps|findstr xxx
強制安裝版本號更低的apk:adb install -r -d "C:\xx.apk"
對指定應用進行500次模擬觸摸事件:adb shell monkey -p com.yzl.test -v 500
查看某個apk的應用信息、版本信息:adb shell mpsys package com.yzl.test
查看已安裝應用列表:adb shell pm list package或adb shell pm list packages-s
H. Android 常用adb命令
常用adb 命令
配置mat 環境,因為從 android profile直接獲取到的hprof文件格式與mat的格式不兼容,所以需要使用工具轉換一下
第 1 行:進程信息
總共(total):754個
運行中(running)狀態:1個
休眠(sleeping)狀態:753個
停止(stopped)狀態:0個
僵屍(zombie)狀態:0個
第 2 行:內存信息
5.5G total:物理內存總量
5.4G used:使用中的內存量
165M free:空閑內存量
76M buffers: 緩存的內存量
第 3 行:Swap分區信息
2.5G total:交換區總量
789M used:使用的交換區大小
1.7G free:空閑交換區大小
2.4G cached:緩沖的交換區大小
內存監控時,可以監控swap交換分區的used,如果這個數值在不斷的變化,說明內核在不斷進行內存和swap的數據交換,這是內存不夠用了。
第 4 行:CPU信息
800%cpu:8核cpu
100%user:用戶進程使用CPU佔比
3%nice:優先值為負的進程佔比
54%sys:內核進程使用CPU佔比
641%idle:除IO等待時間以外的其它等待時間佔比
0%iow:IO等待時間佔比
3%irq:硬中斷時間佔比
0%sirq:軟中斷時間佔比
第 5 行及以下:各進程的狀態監控
PID:進程id
USER:進程所屬用戶
PR:進程優先順序
NI:nice值,負值表示高優先順序,正值表示低優先順序
VIRT:進程使用的虛擬內存總量,VIRT=SWAP+RES
RES:進程使用的、未被換出的物理內存大小,RES=CODE+DATA
SHR:共享內存大小
S:進程狀態
%CPU:上次更新到現在的CPU佔用時間比
%MEM:使用物理內存佔比
TIME+:進程時間的CPU時間總計,單位1/100秒
ARGS:進程名