adb部分總結

adb常用命令

與應用交互

主要是使用am<command>命令叹坦,常用的<command>如下

command 用途
start [options] <INTENT> 啟動 <INTENT> 指定的 Activity
startservice [options] <INTENT> 啟動 <INTENT> 指定的 Service
broadcast [options] <INTENT> 發(fā)送 <INTENT> 指定的廣播
force-stop <packagename> 停止 <packagename> 相關的進程

<INTENT> 參數(shù)很靈活溜歪,和寫 Android 程序時代碼里的 Intent 相對應。
用于決定intent對象的選項如下:

參數(shù) 含義
-a <ACTION> 指定 action,比如 android.intent.action.VIEW
-c <CATEGORY> 指定 category齿椅,比如 android.intent.category.APP_CONTACTS
-n <COMPONENT> 指定完整 component 名,用于明確指定啟動哪個 Activity曼验,如 com.example.app/.ExampleActivity

<INTENT> 里還能帶數(shù)據(jù)卡骂,就像寫代碼時的 Bundle 一樣:

參數(shù) 含義
--esn <EXTRA_KEY> null 值(只有 key 名)
--es <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> string 值
--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> boolean 值
--ei <EXTRA_KEY> <EXTRA_INT_VALUE> integer 值
--el <EXTRA_KEY> <EXTRA_LONG_VALUE> long 值
--ef <EXTRA_KEY> <EXTRA_FLOAT_VALUE> float 值
--eu <EXTRA_KEY> <EXTRA_URI_VALUE> URI
--ecn <EXTRA_KEY> <EXTRA_COMPONENT_NAME_VALUE> component name
--eia <EXTRA_KEY> <EXTRA_INT_VALUE>[,<EXTRA_INT_VALUE...] integer 數(shù)組
--ela <EXTRA_KEY> <EXTRA_LONG_VALUE>[,<EXTRA_LONG_VALUE...] long 數(shù)組

啟動應用/調(diào)起Activity

指定Activity名稱啟動

命令格式:

adb shell am start [options] <INTENT>

調(diào)起微信并傳給它 string 數(shù)據(jù)鍵值對 toast - hello, world

image.png

不指定Activity名稱啟動(啟動主Activity)

命令格式:

adb shell monkey -p <packagename> -c android.intent.category.LAUNCHER 1

啟動QQ


image.png

調(diào)起Service

命令格式:

adb shell am startservice [options] <INTENT>

例如:
調(diào)起微信的某Service

adb shell am startservice -n com.tencent.mm/.plugin.accountsync.model.AccountAuthenticatorService

另外一個典型的用例是如果設備上原本應該顯示虛擬按鍵但是沒有顯示煮甥,可以試試這個:

adb shell am startservice -n com.android.systemui/.SystemUIService

停止Service

命令格式:

adb shell am stopservice [options] <INTENT>

發(fā)送廣播

命令格式:

adb shell am broadcast [options] <INTENT>

可以向所有組件廣播盗温,也可以向指定組件廣播
例如,向所有組件廣播:

adb shell am broadcast -a android.intent.action.BOOT_COMPLETED

又例如成肘,只向org.mazhuang.boottimemeasure/.BootCompletedReceiver廣播

adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -n org.mazhuang.boottimemeasure/.BootCompletedReceiver

這類用法在測試的時候很實用卖局,比如某個廣播的場景很難制造,可以考慮通過這種方式來發(fā)送廣播双霍。
既能發(fā)送系統(tǒng)預定義的廣播砚偶,也能發(fā)送自定義廣播。如下是部分系統(tǒng)預定義廣播及正常觸發(fā)時機:
(均可使用adb觸發(fā))

action 觸發(fā)時機
android.net.conn.CONNECTIVITY_CHANGE 網(wǎng)絡連接發(fā)生變化
android.intent.action.SCREEN_ON 屏幕點亮
android.intent.action.SCREEN_OFF 屏幕熄滅
android.intent.action.BATTERY_LOW 電量低店煞,會彈出電量低提示框
android.intent.action.BATTERY_OKAY 電量恢復了
android.intent.action.BOOT_COMPLETED 設備啟動完畢
android.intent.action.DEVICE_STORAGE_LOW 存儲空間過低
android.intent.action.DEVICE_STORAGE_OK 存儲空間恢復
android.intent.action.PACKAGE_ADDED 安裝了新的應用
android.net.wifi.STATE_CHANGE WiFi 連接狀態(tài)發(fā)生變化
android.net.wifi.WIFI_STATE_CHANGED WiFi 狀態(tài)變?yōu)閱⒂?關閉/正在啟動/正在關閉/未知
android.intent.action.BATTERY_CHANGED 電池電量發(fā)生變化
android.intent.action.INPUT_METHOD_CHANGED 系統(tǒng)輸入法發(fā)生變化
android.intent.action.ACTION_POWER_CONNECTED 外部電源連接
android.intent.action.ACTION_POWER_DISCONNECTED 外部電源斷開連接
android.intent.action.DREAMING_STARTED 系統(tǒng)開始休眠
android.intent.action.DREAMING_STOPPED 系統(tǒng)停止休眠
android.intent.action.HEADSET_PLUG 插入耳機
android.intent.action.MEDIA_UNMOUNTED 卸載外部介質(zhì)
android.intent.action.MEDIA_MOUNTED 掛載外部介質(zhì)
android.os.action.POWER_SAVE_MODE_CHANGED 省電模式開啟

強制停止應用

命令:

adb shell am force-stop <packagename>

命令示例:


image.png

收緊內(nèi)存

adb shell  am send-trim-memory <pid> <level>

pid: 進程 ID level: HIDDEN蟹演、RUNNING_MODERATE、BACKGROUND顷蟀、 RUNNING_LOW酒请、MODERATE、RUNNING_CRITICAL鸣个、COMPLETE
命令示例:

adb shell am send-trim-memory 12345 RUNNING_LOW

表示向 pid=12345 的進程羞反,發(fā)出 level=RUNNING_LOW 的收緊內(nèi)存命令布朦。

修改設置

注: 修改設置之后,運行恢復命令有可能顯示仍然不太正常昼窗,可以運行 adb reboot 重啟設備是趴,或手動重啟。
修改設置的原理主要是通過 settings 命令修改 /data/data/com.android.providers.settings/databases/settings.db 里存放的設置值澄惊。

分辨率

adb shell wm size 480x1024

表示將分辨率修改為 480px * 1024px唆途。
恢復:

adb shell wm size reset

屏幕密度

adb shell wm density 160

表示將屏幕密度修改為 160dpi。
恢復:

adb shell wm density reset

顯示區(qū)域

adb shell wm overscan 0,0,0,200

四個數(shù)字分別表示距離左掸驱、上肛搬、右、下邊緣的留白像素毕贼,以上命令表示將屏幕底部 200px 留白温赔。
恢復:

adb shell wm overscan reset

關閉USB調(diào)試

adb shell settings put global adb_enabled 0

恢復:
用命令恢復不了了,畢竟關閉了 USB 調(diào)試 adb 就連接不上 Android 設備了鬼癣。
去設備上手動恢復吧:「設置」-「開發(fā)者選項」-「Android 調(diào)試」陶贼。

允許/禁止訪問非 SDK API:

不需要設備獲得Root權限。
允許訪問非 SDK API:

adb shell settings put global hidden_api_policy_pre_p_apps 1
adb shell settings put global hidden_api_policy_p_apps 1

禁止訪問非 SDK API

adb shell settings delete global hidden_api_policy_pre_p_apps
adb shell settings delete global hidden_api_policy_p_apps

命令最后的數(shù)字的含義:

含義
0 禁止檢測非 SDK 接口的調(diào)用待秃。該情況下拜秧,日志記錄功能被禁用,并且令 strict mode API锥余,即 detectNonSdkApiUsage() 無效腹纳。不推薦。
1 僅警告——允許訪問所有非 SDK 接口驱犹,但保留日志中的警告信息嘲恍,可繼續(xù)使用 strick mode API。
2 禁止調(diào)用深灰名單和黑名單中的接口雄驹。
3 禁止調(diào)用黑名單中的接口佃牛,但允許調(diào)用深灰名單中的接口。

實用功能

屏幕截圖

注:未指定路徑則医舆,默認為adb所在的文件夾
截圖保存到電腦:

adb exec-out screencap -p > sc.png

如果 adb 版本較老俘侠,無法使用 exec-out 命令,這時候建議更新 adb 版本蔬将。無法更新的話可以使用以下麻煩點的辦法:
先截圖保存到設備里:

adb shell screencap -p /sdcard/sc.png

然后將 png 文件導出到電腦:
adb pull /sdcard/sc.png
可以使用adb shell screencap -h 查看 screencap 命令的幫助信息爷速,下面是兩個有意義的參數(shù)及含義:

參數(shù) 含義
-p 指定保存文件為 png 格式(如果指定文件后綴png,則可省略)
-d display-id 指定截圖的顯示屏編號(有多顯示屏的情況下)

錄制屏幕

錄制屏幕以mp4格式保存到 /sdcard:

adb shell screenrecord /sdcard/filename.mp4

需要停止時按 Ctrl-C霞怀,默認錄制時間和最長錄制時間都是 180 秒惫东。
如果需要導出到電腦:

adb pull /sdcard/filename.mp4

可以使用 adb shell screenrecord --help 查看 screenrecord 命令的幫助信息,下面是常見參數(shù)及含義:

參數(shù) 含義
--size WIDTHxHEIGHT 視頻的尺寸,比如 1280x720廉沮,默認是屏幕分辨率颓遏。
--bit-rate RATE 視頻的比特率,默認是 4Mbps滞时。
--time-limit TIME 錄制時長叁幢,單位秒。
--verbose 輸出更多信息坪稽。

開啟/關閉wifi

開啟

adb shell svc wifi enable

關閉

adb shell svc wifi disable

使用Monkey進行壓力測試

Monkey 可以生成偽隨機用戶事件來模擬單擊曼玩、觸摸、手勢等操作窒百,可以對正在開發(fā)中的程序進行隨機壓力測試演训。
簡單用法:

adb shell monkey -p <packagename> -v 500

表示向 <packagename> 指定的應用程序發(fā)送 500 個偽隨機事件。
更多內(nèi)容可見monkey官網(wǎng)

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贝咙,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子拂募,更是在濱河造成了極大的恐慌庭猩,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件陈症,死亡現(xiàn)場離奇詭異蔼水,居然都是意外死亡,警方通過查閱死者的電腦和手機录肯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門趴腋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人论咏,你說我怎么就攤上這事优炬。” “怎么了厅贪?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵蠢护,是天一觀的道長。 經(jīng)常有香客問我养涮,道長葵硕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任贯吓,我火速辦了婚禮懈凹,結果婚禮上,老公的妹妹穿的比我還像新娘悄谐。我一直安慰自己介评,他們只是感情好,可當我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布尊沸。 她就那樣靜靜地躺著威沫,像睡著了一般贤惯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上棒掠,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天孵构,我揣著相機與錄音,去河邊找鬼烟很。 笑死颈墅,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的雾袱。 我是一名探鬼主播恤筛,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼芹橡!你這毒婦竟也來了毒坛?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤林说,失蹤者是張志新(化名)和其女友劉穎煎殷,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腿箩,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡豪直,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了珠移。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弓乙。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖钧惧,靈堂內(nèi)的尸體忽然破棺而出暇韧,到底是詐尸還是另有隱情,我是刑警寧澤垢乙,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布锨咙,位于F島的核電站,受9級特大地震影響追逮,放射性物質(zhì)發(fā)生泄漏酪刀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一钮孵、第九天 我趴在偏房一處隱蔽的房頂上張望骂倘。 院中可真熱鬧,春花似錦巴席、人聲如沸历涝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽荧库。三九已至堰塌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間分衫,已是汗流浹背场刑。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蚪战,地道東北人牵现。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像邀桑,于是被迫代替她去往敵國和親瞎疼。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內(nèi)容

  • ADB壁畸,即 Android Debug Bridge贼急,它是 Android 開發(fā)/測試人員不可替代的強大工具,也是...
    猿萬閱讀 1,448評論 0 0
  • ADB捏萍,即 Android Debug Bridge竿裂,它是 Android 開發(fā)/測試人員不可替代的強大工具,也是...
    網(wǎng)絡安全自修室閱讀 18,792評論 0 6
  • ADB照弥,即 Android Debug Bridge,它是 Android 開發(fā)/測試人員不可替代的強大工具 基本...
    android_趙樂瑋閱讀 852評論 0 2
  • 轉自 https://github.com/mzlogin/awesome-adb Adb ADB进副,即 Andro...
    hxljy閱讀 317評論 0 5
  • 原文地址[https://github.com/mzlogin/awesome-adb] 基本用法 命令語法 ad...
    SunshineBrother閱讀 734評論 0 2