Android ADB詳解

ADB

Android 調(diào)試橋 (adb) 是一個(gè)通用命令行工具侵续,其允許您與模擬器實(shí)例或連接的 Android 設(shè)備進(jìn)行通信的畴。它可為各種設(shè)備操作提供便利塘砸,如安裝和調(diào)試應(yīng)用末融,并提供對(duì) Unix shell(可用來(lái)在模擬器或連接的設(shè)備上運(yùn)行各種命令)的訪問(wèn)钧惧。該工具作為一個(gè)客戶端-服務(wù)器程序,包括三個(gè)組件:

  • 客戶端滑潘,該組件發(fā)送命令垢乙。客戶端在開(kāi)發(fā)計(jì)算機(jī)上運(yùn)行语卤。您可以通過(guò)發(fā)出 adb 命令從命令行終端調(diào)用客戶端追逮。
  • 后臺(tái)程序,該組件在設(shè)備上運(yùn)行命令粹舵。后臺(tái)程序在每個(gè)模擬器或設(shè)備實(shí)例上作為后臺(tái)進(jìn)程運(yùn)行钮孵。
  • 服務(wù)器,該組件管理客戶端和后臺(tái)程序之間的通信眼滤。服務(wù)器在開(kāi)發(fā)計(jì)算機(jī)上作為后臺(tái)進(jìn)程運(yùn)行巴席。

ADB 工作方式

啟動(dòng)一個(gè) adb 客戶端時(shí),此客戶端首先檢查是否有已運(yùn)行的 adb 服務(wù)器進(jìn)程诅需。如果沒(méi)有漾唉,它將啟動(dòng)服務(wù)器進(jìn)程荧库。當(dāng)服務(wù)器啟動(dòng)時(shí),它與本地 TCP 端口 5037 綁定赵刑,并偵聽(tīng)從 adb 客戶端發(fā)送的命令—所有 adb 客戶端均使用端口 5037 與 adb 服務(wù)器通信分衫。

然后,服務(wù)器設(shè)置與所有運(yùn)行的模擬器/設(shè)備實(shí)例的連接般此。它通過(guò)掃描 5555 到 5585 之間(模擬器/設(shè)備使用的范圍)的奇數(shù)號(hào)端口查找模擬器/設(shè)備實(shí)例蚪战。服務(wù)器一旦發(fā)現(xiàn) adb 后臺(tái)程序,它將設(shè)置與該端口的連接铐懊。請(qǐng)注意邀桑,每個(gè)模擬器/設(shè)備實(shí)例將獲取一對(duì)按順序排列的端口 — 用于控制臺(tái)連接的偶數(shù)號(hào)端口和用于 adb 連接的奇數(shù)號(hào)端口。例如:

模擬器 1科乎,控制臺(tái):5554
模擬器 1壁畸,adb:5555
模擬器 2,控制臺(tái):5556
模擬器 2茅茂,adb:5557
以此類推...

如上所示瓤摧,在端口 5555 與 adb 連接的模擬器實(shí)例與偵聽(tīng)端口 5554 的控制臺(tái)的實(shí)例相同。

當(dāng)服務(wù)器已設(shè)置與所有模擬器實(shí)例的連接后玉吁,您可以使用 adb 命令訪問(wèn)這些實(shí)例照弥。由于服務(wù)器管理與模擬器/設(shè)備實(shí)例的連接,并處理來(lái)自多個(gè) adb 客戶端的命令进副,因此这揣,您可以從任意客戶端(或從某個(gè)腳本)控制任意模擬器/設(shè)備實(shí)例。

ADB CS模式解讀

ADB 主要存放在SDK安裝目錄下的platform-tools文件夾中影斑,它是一個(gè)非常強(qiáng)大的命令行工具给赞,通過(guò)這個(gè)工具你能夠與你的Android設(shè)備進(jìn)行交互。同時(shí)這是一個(gè)包含了以下三部分的CS模式的程序:

adb client

從圖中矫户,我們知道Client是運(yùn)行在PC端的片迅,每當(dāng)我們發(fā)起一個(gè)adb命令的時(shí)候,就會(huì)開(kāi)啟一個(gè)Client程序皆辽。當(dāng)然柑蛇,當(dāng)我們開(kāi)啟DDMS或者ADT的時(shí)候,也會(huì)自動(dòng)創(chuàng)建Client驱闷。

當(dāng)我們開(kāi)啟一個(gè)Client的時(shí)候耻台,它首先會(huì)去檢測(cè)后臺(tái)是否已經(jīng)有一個(gè)Server程序在運(yùn)行著,否則會(huì)開(kāi)啟一個(gè)adb-server進(jìn)程空另。

所有的Client都是通過(guò)5037端口與adb-server進(jìn)行通信的盆耽。

adb daemon(adbd)

從圖中,我們知道daemon是作為一個(gè)后臺(tái)進(jìn)程運(yùn)行在模擬器/真實(shí)Android設(shè)備中的。

daemon使用端口的范圍是5554-5585摄杂,每個(gè)模擬器/設(shè)備連接到PC端時(shí)坝咐,總會(huì)開(kāi)啟這么一個(gè)后臺(tái)進(jìn)程,并且為其分配了兩個(gè)連續(xù)的端口析恢,比如:Emulator 1, console: 5554 Emulator 1, adb: 5555

也正因?yàn)槊總€(gè)設(shè)備都分一組兩個(gè)端口畅厢,也已a(bǔ)db連接手機(jī)的最大數(shù)量為16。

說(shuō)回端口的作用氮昧,在這兩個(gè)端口中,其中偶數(shù)端口是用于server 與設(shè)備進(jìn)行交互的浦楣,可以讓server直接從設(shè)備中讀取數(shù)據(jù)袖肥,而奇數(shù)端口是用來(lái)與設(shè)備的adbd進(jìn)行連接通信的。

adb server

從圖中振劳,我們同樣可以知道椎组,Server也是作為一個(gè)后臺(tái)的程序運(yùn)行在PC端的,他負(fù)責(zé)管理Client進(jìn)程以及adb daemon之間的通信历恐。

當(dāng)一個(gè)Server開(kāi)啟的時(shí)候寸癌,他會(huì)自動(dòng)綁定并且監(jiān)聽(tīng)5037端口,接收Client通過(guò)該端口發(fā)送過(guò)來(lái)的命令弱贼。同時(shí)Server還會(huì)對(duì)5555-5585間的奇數(shù)端口進(jìn)行掃描蒸苇,進(jìn)行對(duì)已連接設(shè)備的定位。

Android adb命令大全

通過(guò)ADB命令查看wifi密碼吮旅、MAC地址溪烤、設(shè)備信息、操作文件庇勃、查看文件檬嘀、日志信息、卸載责嚷、啟動(dòng)和安裝APK等鸳兽。

  1. 獲取序列號(hào):
    adb get-serialno

  2. 查看連接計(jì)算機(jī)的設(shè)備:
    adb devices

  3. 重啟機(jī)器:
    adb reboot

  4. 查看log:
    adb logcat

  5. 終止adb服務(wù)進(jìn)程:

adb kill-server

  1. 重啟adb服務(wù)進(jìn)程:

adb start-server

  1. 獲取機(jī)器MAC地址:
    adb shell cat /sys/class/net/wlan0/address

  2. 獲取CPU序列號(hào):
    adb shell cat /proc/cpuinfo

  3. 安裝APK:
    adb install <apkfile> //比如:adb install baidu.apk

10 .保留數(shù)據(jù)和緩存文件,重新安裝apk:

adb install -r <apkfile> //比如:adb install -r baidu.apk

  1. 安裝apk到sd卡:

adb install -s <apkfile> // 比如:adb install -s baidu.apk

  1. 卸載APK:
    adb uninstall <package> //比如:adb uninstall com.baidu.search

  2. 卸載app但保留數(shù)據(jù)和緩存文件:
    adb uninstall -k <package> //比如:adb uninstall -k com.baidu.search

  3. 啟動(dòng)應(yīng)用:
    adb shell am start -n <package_name>/.<activity_class_name>

  4. 查看設(shè)備cpu和內(nèi)存占用情況:
    adb shell top

  5. 查看占用內(nèi)存前6的app:
    adb shell top -m 6

  6. 查詢各進(jìn)程內(nèi)存使用情況:
    adb shell procrank

  7. 殺死一個(gè)進(jìn)程:
    adb shell kill [pid]

  8. 查看進(jìn)程列表:
    adb shell ps

  9. 查看后臺(tái)services信息:
    adb shell service list

  10. 查看當(dāng)前內(nèi)存占用:
    adb shell cat /proc/meminfo

  11. 從本地復(fù)制文件到設(shè)備:
    adb push <local> <remote>

  12. 從設(shè)備復(fù)制文件到本地:
    adb pull <remote> <local>

發(fā)出 shell 命令

可以使用 shell 命令通過(guò) adb 發(fā)出設(shè)備命令罕拂,可以進(jìn)入或不進(jìn)入模擬器/設(shè)備實(shí)例上的 adb 遠(yuǎn)程 shell揍异。要在不進(jìn)入遠(yuǎn)程 shell 的情況下發(fā)出一個(gè)命令,請(qǐng)使用如下 shell 命令:
adb [-d|-e|-s serial_number] shell shell_command
或者爆班,使用如下命令進(jìn)入模擬器/設(shè)備實(shí)例上的遠(yuǎn)程 shell:
adb [-d|-e|-s serial_number] shell
shell 命令二進(jìn)制文件存儲(chǔ)在模擬器或設(shè)備的文件系統(tǒng)中蒿秦,其路徑為 /system/bin/

調(diào)用 Activity Manager

在 adb shell 中蛋济,您可以使用 Activity Manager (am) 工具發(fā)出命令以執(zhí)行各種系統(tǒng)操作棍鳖,如啟動(dòng) Activity、強(qiáng)行停止進(jìn)程、廣播 intent渡处、修改設(shè)備屏幕屬性及其他操作镜悉。在 shell 中,此語(yǔ)法為:
am command
您也可以直接從 adb 發(fā)出 Activity Manager 命令医瘫,無(wú)需進(jìn)入遠(yuǎn)程 shell侣肄。例如:
adb shell am start -a android.intent.action.VIEW

調(diào)用軟件包管理器

在 adb shell 中,您可以使用軟件包管理器 (pm) 工具發(fā)出命令醇份,以對(duì)設(shè)備上安裝的應(yīng)用軟件包進(jìn)行操作和查詢稼锅。在 shell 中,此語(yǔ)法為:
pm command
您也可以直接從 adb 發(fā)出軟件包管理器命令僚纷,無(wú)需進(jìn)入遠(yuǎn)程 shell矩距。例如:
adb shell pm uninstall com.example.MyApp

進(jìn)行屏幕截圖

screencap 命令是一個(gè)用于對(duì)設(shè)備顯示屏進(jìn)行屏幕截圖的 shell 實(shí)用程序。在 shell 中怖竭,此語(yǔ)法為:
screencap filenam
要從命令行使用 screencap锥债,請(qǐng)輸入以下命令:
$ adb shell screencap /sdcard/screen.png
以下屏幕截圖會(huì)話示例向您展示使用 adb shell 捕獲屏幕截圖,并使用 pull 命令從設(shè)備下載此文件:

$ adb shell
shell@ $ screencap /sdcard/screen.png
shell@ $ exit
$ adb pull /sdcard/screen.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末痊臭,一起剝皮案震驚了整個(gè)濱河市哮肚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌广匙,老刑警劉巖允趟,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異鸦致,居然都是意外死亡拼窥,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門蹋凝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鲁纠,“玉大人,你說(shuō)我怎么就攤上這事鳍寂「暮” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵迄汛,是天一觀的道長(zhǎng)捍壤。 經(jīng)常有香客問(wèn)我,道長(zhǎng)鞍爱,這世上最難降的妖魔是什么鹃觉? 我笑而不...
    開(kāi)封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮睹逃,結(jié)果婚禮上盗扇,老公的妹妹穿的比我還像新娘祷肯。我一直安慰自己,他們只是感情好疗隶,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布佑笋。 她就那樣靜靜地躺著,像睡著了一般斑鼻。 火紅的嫁衣襯著肌膚如雪蒋纬。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天坚弱,我揣著相機(jī)與錄音蜀备,去河邊找鬼。 笑死荒叶,一個(gè)胖子當(dāng)著我的面吹牛碾阁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播停撞,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼悼瓮!你這毒婦竟也來(lái)了戈毒?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤横堡,失蹤者是張志新(化名)和其女友劉穎埋市,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體命贴,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡道宅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了胸蛛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片污茵。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖葬项,靈堂內(nèi)的尸體忽然破棺而出泞当,到底是詐尸還是另有隱情,我是刑警寧澤民珍,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布襟士,位于F島的核電站,受9級(jí)特大地震影響嚷量,放射性物質(zhì)發(fā)生泄漏陋桂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一蝶溶、第九天 我趴在偏房一處隱蔽的房頂上張望嗜历。 院中可真熱鬧,春花似錦、人聲如沸秸脱。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)摊唇。三九已至咐蝇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間巷查,已是汗流浹背有序。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留岛请,地道東北人旭寿。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像崇败,于是被迫代替她去往敵國(guó)和親盅称。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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

  • 從周一開(kāi)始后室,每天碼幾個(gè)字缩膝,一周我就不信會(huì)湊不夠500。 那么我想說(shuō)點(diǎn)什么呢岸霹。說(shuō)說(shuō)自己從生活中積攢的小tips吧疾层。這...
    王亞亞閱讀 115評(píng)論 2 2
  • 高考過(guò)后報(bào)志愿痛黎,稀里糊涂的選了漢語(yǔ)言文學(xué)專業(yè),我本不是個(gè)擅長(zhǎng)寫作熱愛(ài)寫作的人刮吧,但既然選擇了漢語(yǔ)言文學(xué)湖饱,不能到...
    哦嗨閱讀 220評(píng)論 0 0
  • 4月8日,星期天杀捻,晴 昨天晚上睡不好琉历,白天無(wú)精打采。上午補(bǔ)覺(jué)水醋,中午去地里把老掉的菜拔掉旗笔,要種辣椒茄子了。 下午出去...
    潘根春閱讀 686評(píng)論 0 4
  • 今天下午拄踪,準(zhǔn)確的是3點(diǎn)半左右蝇恶,車在高速路上行駛。我坐在后面也睡不著便覺(jué)四處張望惶桐。剛剛好我朝前面望去撮弧,一團(tuán)白色的東西...
    風(fēng)重閱讀 345評(píng)論 3 3