Android adb你真的會用嗎?

引言

本文基于Android官方文檔, 以及個人工作的使用經(jīng)驗, 總結(jié)下adb的常用用法, 備忘.

1, adb簡介

adb全名Andorid Debug Bridge. 顧名思義, 這是一個Debug工具.
然而, 為何稱之為Bridge呢? 因為adb是一個標準的CS結(jié)構(gòu)的工具, 是要連接開發(fā)電腦和你的調(diào)試手機的.包含如下幾個部分:

  • Client端, 運行在開發(fā)機器中, 即你的開發(fā)PC機. 用來發(fā)送adb命令.
  • Deamon守護進程, 運行在調(diào)試設(shè)備中, 即的調(diào)試手機或模擬器.
  • Server端, 作為一個后臺進程運行在開發(fā)機器中, 即你的開發(fā)PC機. 用來管理PC中的Client端和手機的Deamon之間的通信.

2, 常用用法

2.1 adb devices

列舉當前連接的調(diào)試設(shè)備

$ adb devices
List of devices attached
DU2SSE1467010378    device

2.2 adb logcat

打印log信息

指令 說明 備注
adb logcat 打印log /
adb logcat -c 清除手機的log buffer 有些手機權(quán)限控制, 不支持.
adb logcat -b <buffer> 打印指定buffer的log信息 buffer有: main(主log區(qū),默認), events(事件相關(guān)的log), radio(射頻, telephony相關(guān)的log)
adb logcat -v <format> 格式化輸出log 常用的用adb logcat -v time顯示時間
adb logcat -f <filename> 輸出log到指定文件

2.3 adb install/uninstall

安裝卸載apk

// 安裝apk時指定apk file路徑
$ adb install ~/Downloads/mobileqq_android.apk
[100%] /data/local/tmp/mobileqq_android.apk
    pkg: /data/local/tmp/mobileqq_android.apk
Success

// 卸載apk時指定包名
$ adb uninstall com.tencent.mobileqq
Success

2.4 adb pull/push

調(diào)試設(shè)備和開發(fā)PC之間拷貝文件.

// 拷貝本地文件到調(diào)試設(shè)備中
$ adb push ~/temp/GithubApp.trace /sdcard/
[100%] /sdcard/GithubApp.trace

// 從調(diào)試設(shè)備中拷貝文件到本地
$ adb pull /sdcard/GithubApp.trace ~/
[100%] /sdcard/GithubApp.trace

2.5 adb start/kill-server

啟動/殺死adb簡介中提到的Server端進程.

由于adb并不穩(wěn)定, 有時候莫名的問題掉線時, 可以先kill-server, 然后start-server來確保Server進程啟動. 往往可以解決問題.

2.5 adb shell

進入調(diào)試設(shè)備的shell界面, 此時可以使用調(diào)試設(shè)備中的很多指令. 下文高階用法中很多就是.

$ adb shell
shell@hwH60:/ $

3, 高階用法

3.1 adb connect/disconnect

通過wifi進行遠程連接手機進行調(diào)試的.
https://developer.android.com/studio/command-line/adb.html#wireless

需先連上usb模式, 開啟遠程調(diào)試模式:
$ adb tcpip 5555

3.2 adb shell am

am即activity manager.
該命令用來執(zhí)行一些系統(tǒng)動作, 例如啟動指定activity, 結(jié)束進程, 發(fā)送廣播, 更改屏幕屬性等. 調(diào)試利器.

指令 說明 備注
start <Intent> 根據(jù)intent指向啟動Activity Intent可以是顯示的指向activity, 也可以是ACTION方式, 并且可以添加flag, data等參數(shù)信息.
startservice <Intent> 啟動Service 可以添加flag, data等參數(shù)信息.
broadcast <Intent> 發(fā)送廣播 可以添加flag, data等參數(shù)信息.
monitor 啟動一個Crash和ANR的監(jiān)聽器 如有Crash或ANR會在控制臺輸出相關(guān)信息.
force-stop <Package> 強制停止該包相關(guān)的一切 傳入package name.
kill <Package> 殺死該包相關(guān)的所有進程 傳入package name.
kill-all 殺死所有后臺進程
display-size WxH 改變顯示的分辨率 例如adb shell am display-size 1280x720, 手機可能不支持.
display-density <dpi> 改變顯示的density 例如adb shell am display-density 320, 手機可能不支持.

3.3 adb shell pm

pm即package manager.
用來執(zhí)行package相關(guān)的操作, 例如安裝卸載, 查詢系統(tǒng)的安裝包等.

指令 說明 備注
list packages <Filter> 列出滿足filter條件的所有包
list permissions <Group> 列出該Group的所有權(quán)限
list features 查看系統(tǒng)支持哪些feature 例如藍牙, wifi, 攝像頭等.
install <Path>/uninstall <Package> 安裝卸載
clear <Package> 清除應(yīng)用數(shù)據(jù)

3.4 adb shell screencap

截屏, 比截屏快捷鍵更加方便快捷.

$ adb shell screencap /sdcard/screen.png

$ adb pull /sdcard/screen.png ~/temp
[100%] /sdcard/screen.png

3.5 adb shell screenrecord

錄屏, 做demo的話, 可以很方便的用這個命名錄制視頻, 然后借助工具將其轉(zhuǎn)換成gif圖, 超贊. 如下:

screenrecord gif

Android4.4及以上系統(tǒng)可用.

2.5 adb shell dumpsys

強大的dump工具, 可以輸出很多系統(tǒng)信息. 例如window, activity, task/back stack信息, wifi信息等.

探索Activity之launchMode探索Activity之啟動Intent flag和Affinity就是用adb shell dumpsys activity來輸出task信息的.

常用dumpsys:

指令 說明 備注 細分參數(shù)
activity 輸出app組件相關(guān)信息 還可以用細分參數(shù)獲得單項內(nèi)容, 下同. 例如adb shell dumpsys activity activities來獲取activity task/back stack信息. activites, service, providers, intents, broadcasts, processes
alarm 輸出當前系統(tǒng)的alarm信息 / /
cpuinfo 輸出當前的CPU使用情況 / /
diskstats 輸出當前的磁盤使用狀態(tài) / /
batterystats 電池使用信息 / /
package package相關(guān)信息, 相當于pm功能的集合 輸出諸如libs, features, packages等信息 /
meminfo 輸出每個App的內(nèi)存使用和系統(tǒng)內(nèi)存狀態(tài) 可以指定包名, 例如adb shell dumpsys meminfo com.anly.githubapp /
window 輸出當前窗口相關(guān)信息 / policy, animator, tokens, windows
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末玖姑,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌做鹰,老刑警劉巖眶痰,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诊杆,死亡現(xiàn)場離奇詭異船侧,居然都是意外死亡蔬螟,警方通過查閱死者的電腦和手機琅摩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進店門铁孵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人房资,你說我怎么就攤上這事蜕劝。” “怎么了轰异?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵岖沛,是天一觀的道長。 經(jīng)常有香客問我搭独,道長烫止,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任戳稽,我火速辦了婚禮馆蠕,結(jié)果婚禮上期升,老公的妹妹穿的比我還像新娘。我一直安慰自己互躬,他們只是感情好播赁,可當我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吼渡,像睡著了一般容为。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上寺酪,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天坎背,我揣著相機與錄音,去河邊找鬼寄雀。 笑死得滤,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的盒犹。 我是一名探鬼主播懂更,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼急膀!你這毒婦竟也來了沮协?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤卓嫂,失蹤者是張志新(化名)和其女友劉穎慷暂,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晨雳,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡行瑞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了悍募。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡洋机,死狀恐怖坠宴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情绷旗,我是刑警寧澤喜鼓,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站衔肢,受9級特大地震影響庄岖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜角骤,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一隅忿、第九天 我趴在偏房一處隱蔽的房頂上張望心剥。 院中可真熱鬧,春花似錦背桐、人聲如沸优烧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽畦娄。三九已至,卻和暖如春弊仪,著一層夾襖步出監(jiān)牢的瞬間熙卡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工励饵, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留驳癌,地道東北人。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓曲横,卻偏偏與公主長得像喂柒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子禾嫉,可洞房花燭夜當晚...
    茶點故事閱讀 45,107評論 2 356

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,195評論 25 707
  • adb:Android 調(diào)試橋接 Android Debug Bridge灾杰,是一個 C/S 架構(gòu)的命令行工具 a...
    LLd_閱讀 3,093評論 0 3
  • 在iOS上實現(xiàn)縮放的算法其實很簡單 下面分別解釋函數(shù)中的每一行代碼: 確定偏移值:scale大于1表示縮小,sca...
    UniThan閱讀 2,055評論 0 3
  • 我又來啦熙参! 畫了一枝桃花艳吠,祝大家元宵喜樂,滿面春風(fēng)孽椰! 以下是各種擺拍= =: 這是用手機app的功能處理了一下昭娩,個...
    葉薄荷閱讀 2,240評論 18 53
  • 2017锐涯,我已經(jīng)三十過五磕诊,人生溜走了一半,我卻碌碌無為纹腌。 十八歲霎终,我考入軍校,從懵懂的少年就開始接受軍營的歷練...
    碎碎念不念閱讀 263評論 0 0