ADB 實用筆記

這只是一篇筆記,若是你是專業的 Android 開發人員,你應該看一手知識,也就是官方的文檔,若是你是隻是想要簡單瞭解,能夠看這篇。html

ADB 全稱 Android Debug Bridge,即安卓調試橋,經過 ADB 可以與模擬器實例或者是鏈接的安卓設備進行通訊,能夠經過它來調試安卓應用,作應用的自動化測試,搭建雲測試平臺等。android

安裝

brew cask install android-platform-tools
複製代碼

經過 USB 鏈接手機,打開手機的開發者選項(容許經過 USB 調試、經過 USB 安裝應用),使用 adb devices 能夠查看鏈接的設備git

輸出格式爲 [serialNumber] [state],serialNumber 就是序列號,state 有以下幾種:github

offline —— 表示設備未鏈接成功或無響應。shell

device —— 設備已鏈接。注意這個狀態並不能標識 Android 系統已經徹底啓動和可操做,在設備啓動過程當中設備實例就可鏈接到 adb,但啓動完畢後系統才處於可操做狀態。npm

no device —— 沒有設備/模擬器鏈接。windows

加上 -l 參數能夠看到具體的設備信息:bash

使用 adb help 查看幫助微信

命令語法

與其餘工具的命令行相似,ADB 命令有相應的 options,從上面的 adb help 中能夠看到對應的全局 options ,最經常使用的 options 就是 -s 也就是在多設備鏈接的時候使用指定序列號的設備。大體命令格式能夠總結爲:app

adb [-d|-e|-s <serialNumber>] <command> 
複製代碼

查看應用

查看設備安裝的應用

adb shell pm list packages
複製代碼

其中 pmpackage manager 的縮寫,abd shell 天然就是運行設備的終端 shell 的意思,由於 android 自己就是基於 unix 的。

能夠經過參數來過濾,如 '-3' 爲只顯示第三方應用,-s 爲只顯示系統應用,一樣也能夠經過管道和 grep 來過濾,如我想知道設備中安裝了哪些騰訊的應用軟件:

adb shell pm list packages | grep tencent
複製代碼

能夠看到安裝的騰訊應用程序有 qq音樂(com.tencent.qqmusic)、qq郵箱(com.tencent.androidqqmail)、微信(com.tencent.mm)、手機QQ(com.tencent.mobileqq)、和平精英(com.tencent.tmgp.pubgmhd),而 com.tencent.androidqqmail 是系統應用,暫時不知道是哪一個。

安裝應用

能夠經過 ADB 給手機安裝電腦上有的 apk ,如給手機裝上微博:

adb install /Users/huruji/Downloads/weibo.apk
複製代碼

一段時間後終端顯示 success 則代表安裝成功。

卸載應用

相似於上面,使用 uninstall 命令加上包名便可,如卸載微博:

adb uninstall com.sina.weibo
複製代碼

一段時間後終端顯示 success 則代表卸載成功。

查看應用安裝路徑

如查看微博的安裝路徑

adb shell pm path com.sina.weibo
複製代碼

打開應用

打開應用須要知道對應的包名和 Activity 名,能夠先經過命令獲取啓動頁,如獲取微信的啓動頁:

adb shell dumpsys window windows | grep "Current"
複製代碼

獲取到包名和 Activity 名是 com.tencent.mm/com.tencent.mm.ui.LauncherUI,使用 adb shell am start 命令打開

adb shell am start com.tencent.mm/com.tencent.mm.ui.LauncherUI
複製代碼

其中 am 是 Activity Manager 的縮寫

眼睛盯着手機就能夠看到手機 「自動」 打開了微信(這個很差記錄演示,得本身嘗試)

退出應用

如退出微信:

adb shell am force-stop com.tencent.mm
複製代碼

複製文件

將電腦的文件複製到設備上成爲 push ,將設備上的文件複製到電腦上成爲 pull

adb pull <設備裏的文件路徑> [電腦上的目錄]
複製代碼
adb push <電腦上的文件路徑> <設備裏的目錄>
複製代碼

模擬按鍵、輸入

經過輸入 adb shell input 能夠看到對應的提示:

輸入文字就是

adb shell input text
複製代碼

模擬按鍵就是

adb shell input keyevent
複製代碼

模擬點擊就是

adb shell input tap
複製代碼

模擬滑動就是

adb shell input swipe
複製代碼

比較須要記憶的就是按鍵的keycode,截取 awesome adb 的總結:

還有就是 swipe 的座標對應的是真實的屏幕分辨率,好比,我想讓手機在抖音應用裏自動切換視頻就可使用swipe:

adb shell input swipe 250 1000 250 100
複製代碼

窗口管理

窗口管理的命令是 wm,是 window manager 的縮寫

如上面提到的須要獲取到屏幕的分辨率:

adb shell wm size
複製代碼

也能夠經過這個命令修改窗口分辨率,如:

adb shell wm size 720x1280
複製代碼

一樣能夠經過 reset 還原回來

adb shell wm size reset
複製代碼

獲取密度

adb shell wm density
複製代碼

一樣能夠修改和重置

adb shell wm density 500
複製代碼
adb shell wm density reset
複製代碼

設置內邊距

adb shell wm overscan 50,100,0,200
複製代碼

重置

adb shell wm overscan reset
複製代碼

設備信息

獲取手機型號

adb shell getprop ro.product.model
複製代碼

獲取電池情況

adb shell dumpsys battery
複製代碼

scale 表示最大電量,level 表示當前電量。

獲取 Android 版本

adb shell getprop ro.build.version.release
複製代碼

還有其餘的信息也能夠經過 getprop 命令獲取:

獲取設備 IP 地址

adb shell ifconfig | grep Mask
複製代碼

設備的 IP 地址就是 10.159.100.193

截屏和錄屏

截屏

截屏能夠將文件存在設備裏也能夠導出到電腦,如導出到電腦:

adb shell screencap -p > /Users/huruji/Downloads/cap/a.png
複製代碼

-p 的意思就是存儲爲 png 格式,> 表示存儲在電腦裏,若是去掉 > 將路徑換成設備的路徑就是存儲在設備裏。

錄屏

錄屏保存在設備內,若是須要導出到電腦端可使用以前提到的 pull 命令,錄屏默認最長時間是180s:

shell screenrecord /sdcard/b.mp4
複製代碼

將文件導出

adb shell pull /sdcard/b.mp4
複製代碼

須要注意的是導出到的是當前文件夾,因此若是須要指定對應的文件夾,須要先 cd 到對應文件夾。

以上大概就是經常使用的操做,若是你須要經過代碼控制的話就須要封裝相應的包,畢竟裸着拼接字符串很難受,我大概在 npm 上搜索了一下,目前這類包相對較少,比較流行的就是appium-adb,而這個也是服務於項目github.com/appium/appi…

呼應下開頭,開頭提到的 ADB 用於雲測試平臺,目前我知道的開源的有stf 和阿里開源的macaca

相關文章
相關標籤/搜索