乾貨|做App測試,那些必知必會的Adb常用命令好訊息!名企定向培養測試開發就業班2期課程開始招生啦!
本文節選自霍格沃茲測試學院內部教材
為了讓大家更好的學習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
的方式連線,這種方式不做贅述。
-
模擬器:不需要手動設定 USB 除錯開關,預設是開啟的
-
真機通過 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 lsacctcachechargerconfigddatadefault.propdevetc...
另一種方式是在裝置上啟動互動式 shell
adb [-s serial_number] shell
進入 shell 之後,再執行對應的命令。
比如我們進入裝置內部,可以檢視裝置內部的目錄結構和內容
feier@ ~ % adb shellroot@x86:/ # lsacctcachechargerconfigddatadefault.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 dumpsys
dumpsys 是一種在 Android 裝置上執行的工具,可提供有關係統服務的資訊。可以使用 adb 從命令列呼叫
dumpsys,獲取在連線的裝置上執行的所有系統服務的診斷輸出。
比如在測試中,如果需要通過 adb 命令啟動 app,則需要知道 app 的包名和入口的 Activity
名。這個時候,就可以通過下面這條命令獲取到這兩個資訊。
這個場景,需要先把要獲取資訊的應用啟動,讓它在前臺執行,然後執行命令
adb shell dumpsys activity | grep mFocusedActivity
feier@ ~ % adb shell dumpsys activity | grep mFocusedActivity mFocusedActivity: ActivityRecord{9dae968 u0 com.xueqiu.android/.common.MainActivity t139}
下方的日誌中就會展示出來當前的包名和 Activity 名稱。
-
包名:
com.xueqiu.android
-
Activity 名:
.common.MainActivity
adb shell dumpsys
adb 命令還支援直接獲取應用的頁面資訊。這個頁面資訊包含了頁面中元素的屬性,可以方便做自動化測試的時候去定位元素。獲取到的頁面佈局會輸出到一個 xml
檔案中。
-
當前視窗的 UI 佈局簡化資訊:
adb shell uiautomator dump --compressed
-
feier@ ~ % adb shell uiautomator dump --compressedUI hierchary dumped to: /sdcard/window_dump.xml
不指定輸出檔案路徑時,dump 下來的檔案預設儲存路徑為 /sdcard/window_dump.xml
可以通過 adb pull 命令把檔案傳輸到電腦中,然後用 uiautomatorviewer 工具開啟檢視佈局。
- 指定輸出檔案路徑:
adb shell uiautomator dump file <裝置路徑>
adb常用命令就先講到這裡啦,下期我們分享App常見bug解析。大家還想看什麼內容的文章也可以留言告訴我們哦!
** 推薦學習**
內容全面升級,4 個月 20+ 專案實戰強化訓練,資深測試架構師、開源專案作者親授 BAT 大廠前沿最佳實踐,
帶你一站式掌握測試開發必備核心技能( 對標阿里P6+,年薪50W+ )! 直推 BAT 名企測試經理,普遍漲薪 50%+!
⬇️ 點選“閱讀原文”,提升測試核心競爭力!
閱讀原文
從手工測試進階到測試開發,還猶豫什麼?現在就學起來!
你是否是剛剛畢業或即將畢業苦於沒有工作經驗和專業技能?
你是否想轉行做測試卻又很迷茫,不知道從何學起?
你是否是做了很多年測試,但仍然停留在手工測試階段始終無法提升?
你是否看了很多教程和視訊,感覺一學就會,一用就廢?
你是否面對著各種測試技能帖,不知道選擇相信哪個,何去何從?
那就加入我們吧 《軟體測試/名企定向培養測試開發就業班》
,我們為零基礎或基礎薄弱的小夥伴量身訂製的課程,從眾多的技能中,篩選出工作中必備的技能。讓大家不在盲目的學習,不會在把寶貴的時間,浪費在學一些工作中根本用不上的技能當中。
課程目標
傳統的測試,不僅薪資待遇低、而且成長不足,上升通道幾乎是完全被堵住了,需要突破瓶頸蛻變重生。而測試開發,薪資高、成長快、實戰經驗越豐富對質量管理的價值就越大。很多名企大廠
高薪溢價去「搶奪」 。所以我們的目標就是讓大傢俱備測試開發的必備技能,讓自己的職業發展上升到新的臺階。
測試工程師也面臨著生存挑戰