這只是一篇筆記,若是你是專業的 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
複製代碼
其中 pm
是 package 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 表示當前電量。
adb shell getprop ro.build.version.release
複製代碼
還有其餘的信息也能夠經過 getprop
命令獲取:
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…