ADB原理與adb常用命令

本文翻譯android adb官網的說明與命令使用方法:

adb 使用socket進行PC與手機設備的通信。

Android調試橋(adb)是一個通用的命令行工具,可以讓你與一個模擬器實例或連接安卓設備通信。它是一個客戶機-服務器程序,包括三部分:

1.      adb  client,運行在你的開發機器上的服務,你可以從client發出一個adbshell命令。其他的android 工具例如“adt”和“ddms”也創建於client端。adbddms工具

2.      adb server,運行在開發機器的後臺進程,server管理着clientdaemon(虛擬機或者是實體機)的通訊。

3.      adb daemon,運行在虛擬機或者是實體機的後臺進行。用於移動機器與PC機器的通信。

adb的目錄:<sdk>/platform-tools/.

當你運行在pc機上運行adb服務時,adb服務先回查找adb server進程是否在運行,如果不在運行,則啓動服務,如果服務在運行,它綁定了本地的5037端口並監聽adbclientsadbclients使用5037端口與adb server進行通訊。

 

server與正在運行的emulator/device進行自動連接,他通過奇數範圍的端口號進行連接端口號範圍爲“5555-5585”,用這個範圍去識別emulators/devices。當一個server尋找一個adbdaemon時,他會連接這些端口,記錄哪一個emulator/devices實例獲得順序的端口號,注意一個emulator/devices 會獲取一個偶數端口號作爲“控制檯連接端口號”和一個奇數端口號作爲“adb 連接端口號”例如:

 

Emulator1, console: 5554
Emulator 1, adb: 5555
Emulator 2, console: 5556
Emulator 2, adb: 5557
等等

也就是說“:Emulator/Device佔用兩個(一組)端口,一個爲偶數的5554,一個奇數的5555
   
如果還開啓其他的Emulator,則使用的另一組端口是5556,5557,一直到5585.

其中,adbservers emulator/devices交互時使用了一組端口(2個端口),一個是偶數端口(5554)專門用於與emulator實例的連接,數據可以從emulator轉發給ide控制檯,一個是奇數端口(5555)專門與adb daemon連接爲調試使用。

       一旦服務器建立起連接你就可以使用adb命令去訪問這些實例了,可以發送不同的adb命令因爲服務管理連接emulator/devices您可以控制任何模擬器/設備實例從任何客戶端(或腳本)

 

提示:當你連接的設備上運行Android4.2.2或更高的到你的電腦,系統顯示一個對話框詢問是否接受一個RSA密鑰,允許調試通過這臺電腦。這種安全機制保護用戶設備,因爲它確保了USB調試和其他adb client命令不能執行,除非你能解鎖設備並承認對話框。這要求你有adb 1.0.31版本以便於在Android4.2.2或更高的版本上進行調試運行。

 

adb命令:

-d只通過usb連接device

-e:只運行emulaor實例

devices:顯示pc機上所有的android機器列表

help:幫助

version:版本

logcat [option] [filter-spects]:打印log到屏幕上(可以選擇性打印)

bugreport:包含豐富的系統(內存/cpu等信息)和用戶log信息,它是其他很多命令輸出的結果的記錄,非常有用。

jdwp: (java debug wireprotocol)dalvikVM的一個線程,可以建立在adb或者tcp基礎上,與DDMSdebugger進行通信。託管一個JDWP運輸的列表進程的PID

install:安裝一個apk

pull :從設備中導出文件導pc

adb pull <remote><local> adb pull /sdcard/a.txt e:/a.txt:把android系統中的a.txt文件pullPCe盤下。

push:從PC機上導出文件t推送到emulator/devices

adb push <locat><remote> adb push e:/a.txt /sdcard/ PC上的文件pushandroid機器上。

forwardsocket 連接從一個指定的本地端口轉發到指定的遠程端口模擬器/設備實例。

adb forward tcp6100 tcp:71006100端口轉發到7100端口

例如:tcp:<portnum>

local:<UNIXdomain socket name>

dev:<characterdevice name>

jdwp:<pid>

 

get-serialno:獲取設備的名稱

get-state:獲取設備的屬性(devices/emulator

wait-for-devices:等待設備連接

       可以跟別的命令同時運行如:adbwait-for-device install <app>.apk

adb  shell getprop:獲取系統屬性

adb shell setprop:設置系統屬性

start-server:開啓adb服務

kill-servier:關閉adb服務

shell:在目標實例上運行shell的命令,進入shell模式

shell[shellCommand]:在目標實例上運行shell的命令


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