ADB常用命令 一、什麼是ADB? 二、adb命令 三、adb shell 四、其他常用pm、am、dumpsys、uiautomator、input

一、什麼是ADB?

adb:一種功能多樣的命令行調試工具。

Android 調試橋 (adb) ,可與設備進行通信。adb 命令可用於執行各種設備操作(例如安裝和調試應用),並提供對 Unix shell(可用來在設備上運行各種命令)的訪問權限。它是一種客戶端-服務器程序,包括以下三個組件:

客戶端:用於發送命令。客戶端在開發機器上運行。可以通過發出 adb 命令從命令行終端調用客戶端。(可以通過它對Android應用進行安裝、卸載、調試)

PC上的手機助手基本都是通過adb命令去完成的。有時候裝了這類手機助手的話,它自帶的adb程序可能會與Android SDK下的adb程序產生衝突,5037端口被佔用,導致adb命令無法連接到設備。Windows下通過netstat -ano|findstr "5037"

守護程序 (adbd):用於在設備上運行命令。守護程序在每個設備上作爲後臺進程運行

執行adb shell ps | grep adbd, 可以找到該後臺進程,Windows使用findstr替代grep.

adb nodaemon server

服務器(Service):用於管理客戶端與守護程序之間的通信。服務器在開發機器上作爲後臺進程運行

adb服務啓動後,Windows可以在任務管理中找到adb.exe; linux ps -ef | gref adb 可以查看service

二、adb命令

一般都是通過這樣子的格式 adb [-d|-e|-s <設備序列號>] <子命令>

通常只有一臺設備就忽略 [-d|-e|-s ] 這一部分

參數含義:

-d指定當前唯一通過USB連接的Android設備爲命令目標

-e指定當前唯一運行的模擬器爲命令目標

-s <serialNumber>指定相應 serialNumber 號的設備/模擬器爲命令目標

這裏介紹一些常用的命令:

獲取設備列表及設備狀態

adb devices

獲取設備的狀態

adb get-state

注意:設備的狀態有 3 鍾,device , offline , unknown

device:設備正常連接

offline:連接出現異常,設備無響應

unknown:沒有連接設備

 結束 adb 服務

adb kill-server 

 啓動 adb 服務

adb start-server

注意:通常兩個命令一起用,有時候我們開啓server會失敗,這是因爲我們裝了的手機助手,豌豆莢或者其他軟件自帶有自己的adb,導致端口衝突開啓失敗。一般在連接出現異常,使用 adb devices 未正常列出設備, 設備狀態異常時使用 kill-server,然後運行 start-server 進行重啓服務。

打印 Android 的系統日誌

adb logcat 

 打印 dumpsys、dumpstate、logcat 的輸出,也是用於分析錯誤輸出比較多

adb bugreport 

打印日誌後重定向到一個文件中

adb bugreport > d:\bugreport.log

 安裝應用,覆蓋安裝是使用 -r 選項

adb install  **.apk


注意:有些adb版本無法支持安裝中文的apk

查看手機應用包名

adb shell pm list packages

查看應用對應的apk文件在手機上的安裝位置則可以在上面的命令後加-f參數

adb shell pm list packages -f

卸載應用,後面跟的參數是應用的包名,請區別於 apk 文件名

adb uninstall com.perfdog.app

'-k' means keep the data and cache directories , -k 選項,卸載時保存數據和緩存目錄

adb -k uninstall

 將 Android 設備上的文件或者文件夾複製到本地

adb pull

adb pull /sdcard/test.txt C:\Users\Administrator\Desktop\log


推送本地文件至 Android 設備

adb push 電腦文件路徑 安卓設備路徑

獲取連接到的手機的序列號

adb get-serialno

獲取設備的連接狀態

adb -s get-state

等待設備連接成功

adb wait-for-device

該命令將會阻塞一直到默認連接的那部機器狀態變爲device,也就是連接成功。

三、adb shell

其實adb shell命令就是調用的是Android設備中的system/bin目錄下的命令。

Android的內核本身就是Linux,所以Android本身也支持Linux命令,但是因爲是手機系統,所以進行了一定的刪減,部分命令不支持,而不支持的部分,我們可以通過安裝busybox這個軟件進行。

如何在手機中執行Shell命令?

  每次都加上adb shell來進行命令的發送與執行

adb shell <command>

 先通過adb shell進入手機Shell執行狀態,然後直接輸入Linux命令。


使一個apk處於禁用狀態,相當於卸載了:

disable   <PACKAGE_OR_COMPONENT>

其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobile

eg:adb shell su disable com.UCMobile/.main.UCMobile

同時我們在手機上發現,UC瀏覽器的圖標不見了

讓一個apk從禁用狀態恢復過來

enable <PACKAGE_OR_COMPONENT>

其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobileeg:

adb shell su enable com.UCMobile/.main.UCMobile

同時我們從手機上發現,UC瀏覽器的圖標又出現了。

查看一個apk所在的路徑

pm path 包名

adb shell pm path com.UCMobile

查看手機中裝的所有的包

pm list packages

屏幕開始錄像並且儲存到/sdcard中,同時名字爲demo.mp4

adb shell screenrecord /sdcard/demo.mp4

錄屏設置時長10s,命名爲demo.mp4

adb shell screenrecord --time-limit 10 /sdcard/demo.mp4

注意:現在僅支持一部分手機錄屏,不支持的手機會出現以下提示

解決方法:

安裝了scrcpy之後,只需要輸入如下命令,即可錄取指定設備的屏幕

scrcpy -s device --render-expired-frames -Nr ./demo.pm4

--render-expired-frames:儘可能最大幀率

-N:不在PC端展示

-r:錄製mp4/mkv文件

關閉設備請求,開啓設備

adb shell stop

adb shell start

設備關機以及重啓

adb reboot

adb shutdown

四、其他常用pm、am、dumpsys、uiautomator、input

pm:安裝、卸載、清理包和數據、

am:啓動具體的app

dumpsys:獲取系統、app的性能數據

uiautomator:獲取當前界面結構和執行自動化測試

input:幫助完成一些自動化模擬的指令

pm(package manager)可以獲取一些安裝到Android設備上的app的信息

pm list packages 用法:list packages [ options] filter

獲取所有的應用的包名

adb shell pm list package

列出系統應用

adb shell pm list package -s


列出第三方應用

adb shell pm list package -3


查看它們的關聯文件

adb shell pm list package -f

查看軟件包的安裝來源

adb shell pm list package -i

pm dump 包名 很多dump信息

adb shell pm dump com.yy.huanju

安裝應用

pm install 

apk如果在電腦用 adb install 

如果在Android設備上用 adb shell pm install

卸載應用,同adb uninstall ,後跟包名

pm uninstall 

清除應用數據

pm clear 

am(activity manager,字面意思就跟activity有關,大家都知道Android的界面都是由一個個activity顯示的)

啓動一個Activity

adb shell am start -n package/launch_activity

獲取到package和launch_activity

adb shell dumpsys window windows | findstr Current

AndroidSDK中aapt工具,檢索命令結果,可以獲取到package和launch_activity

aapt.exe d badging xx.apk

這裏涉及到一個點,如何找到程序的入口,首先你要知道是哪個activity才能啓動;

adb logcat | grep -i displayed

啓動華爲系統相機

adb shell am start -n com.huawei.camera/com.huawei.camera

打開音樂播放器

am start -a android.intent.action.MUSIC_PLAYER

播放指定音樂:

am start -a "android.intent.action.VIEW" -t "audio/mp3" -d "file:///sdcard/Music/test.mp3"

先停止目標應用,再啓動

adb shell am start -S com.huawei.camera/com.huawei.camera

等待應用完成啓動

adb shell am start -W com.huawei.camera/com.huawei.camera

啓動網頁(android.intent.action.VIEW具體參考Android官網)

adb shell am start -aandroid.intent.action.VIEW-d http://baidu.com

結束應用

am force-stop 包名

input

模擬輸入,向獲得焦點的EditText控件輸入內容

adb shell input text  "hello,world"

返回主界面

adb shell input keyevent KEYCODE_HOME

發送一個點擊操作的指令,參數是<x> <y>座標

adb shell input tap 100 100

從左往右滑動屏幕, /從 100 100 經歷300毫秒滑動到 200 200

adb shell input swipe 100 100 200 200  300

長按操作,在 100 100 位置長按 1000毫秒

adb shell input swipe 100 100 100 100  1000

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章