本文章轉(zhuǎn)載于搜狗測試
指定 adb server 的網(wǎng)絡(luò)端口
基本用法
adb 命令的基本語法如下:
adb [-d|-e|-s]
如果只有一個設(shè)備/模擬器連接時,可以省略掉[-d|-e|-s ]這一部分常侦,直接使用adb 菲语。
如果有多個設(shè)備/模擬器連接插爹,則需要為命令指定目標(biāo)設(shè)備。
參數(shù)含義
-d指定當(dāng)前唯一通過 USB 連接的 Android 設(shè)備為命令目標(biāo)
-e指定當(dāng)前唯一運行的模擬器為命令目標(biāo)
-s 指定相應(yīng) serialNumber 號的設(shè)備/模擬器為命令目標(biāo)
在多個設(shè)備/模擬器連接的情況下較常用的是-s 參數(shù)棚贾,serialNumber 可以通過adb devices命令獲取琳骡。如:
$ adb devices
List of devices attached
cf264b8f? ? device
emulator-5554? device
輸出里的cf264b8f和emulator-5554即為 serialNumber。比如這時想指定cf264b8f這個設(shè)備來運行 adb 命令獲取屏幕分辨率:
adb -s cf264b8f shell wm size
遇到多設(shè)備/模擬器的情況均使用這幾個參數(shù)為命令指定目標(biāo)設(shè)備倾哺,下文中為簡化描述,不再重復(fù)刽脖。
啟動 adb server 命令:
adb start-server
(一般無需手動執(zhí)行此命令羞海,在運行 adb 命令時若發(fā)現(xiàn) adb server 沒有啟動會自動調(diào)起。)
停止 adb server 命令:
adb kill-server
命令:
adb version
示例輸出:
Android Debug Bridge version 1.0.36
Revision 8f855a3d9b35-android
adb 的運行原理是 PC 端的 adb server 與手機端的守護進程 adbd 建立連接曲管,然后 PC 端的 adb client 通過 adb server 轉(zhuǎn)發(fā)命令却邓,adbd 接收命令后解析運行。
所以如果 adbd 以普通權(quán)限執(zhí)行翘地,有些需要 root 權(quán)限才能執(zhí)行的命令無法直接用adb xxx執(zhí)行申尤。這時可以adb shell然后su后執(zhí)行命令癌幕,也可以讓 adbd 以 root 權(quán)限執(zhí)行衙耕,這個就能隨意執(zhí)行高權(quán)限命令了昧穿。
命令:
adb root
正常輸出:
restarting adbd as root
現(xiàn)在再運行adb shell,看看命令行提示符是不是變成#了橙喘?
有些手機 root 后也無法通過adb root命令讓 adbd 以 root 權(quán)限執(zhí)行时鸵,比如三星的部分機型,會提示adbd cannot run as root in production builds厅瞎,此時可以先安裝 adbd Insecure饰潜,然后adb root試試。
相應(yīng)地和簸,如果要恢復(fù) adbd 為非 root 權(quán)限的話彭雾,可以使用adb unroot命令。
指定 adb server 的網(wǎng)絡(luò)端口
命令:
adb -Pstart-server
默認(rèn)端口為 5037锁保。
命令:
adb devices
輸出示例:
List of devices attached
cf264b8f? ? device
emulator-5554? device
輸出格式為[serialNumber] [state]薯酝,serialNumber 即我們常說的 SN,state 有如下幾種:
offline—— 表示設(shè)備未連接成功或無響應(yīng)爽柒。
device—— 設(shè)備已連接吴菠。注意這個狀態(tài)并不能標(biāo)識 Android 系統(tǒng)已經(jīng)完全啟動和可操作,在設(shè)備啟動過程中設(shè)備實例就可連接到 adb浩村,但啟動完畢后系統(tǒng)才處于可操作狀態(tài)做葵。
no device—— 沒有設(shè)備/模擬器連接。
以上輸出顯示當(dāng)前已經(jīng)連接了兩臺設(shè)備/模擬器心墅,cf264b8f與emulator-5554分別是它們的 SN酿矢。從emulator-5554這個名字可以看出它是一個 Android 模擬器。
常見異常輸出:
沒有設(shè)備/模擬器連接成功怎燥。
List of devices attached
設(shè)備/模擬器未連接到 adb 或無響應(yīng)棠涮。
List of devices attached
cf264b8f offline
通過 USB 連接來正常使用 adb 需要保證幾點:
硬件狀態(tài)正常。
包括 Android 設(shè)備處于正常開機狀態(tài)刺覆,USB 連接線和各種接口完好严肪。
Android 設(shè)備的開發(fā)者選項和 USB 調(diào)試模式已開啟。
可以到「設(shè)置」-「開發(fā)者選項」-「Android 調(diào)試」查看谦屑。
如果在設(shè)置里找不到開發(fā)者選項驳糯,那需要通過一個彩蛋來讓它顯示出來:在「設(shè)置」-「關(guān)于手機」連續(xù)點擊「版本號」7 次。
設(shè)備驅(qū)動狀態(tài)正常氢橙。
這一點貌似在 Linux 和 Mac OS X 下不用操心酝枢,在 Windows 下有可能遇到需要安裝驅(qū)動的情況,確認(rèn)這一點可以右鍵「計算機」-「屬性」悍手,到「設(shè)備管理器」里查看相關(guān)設(shè)備上是否有黃色感嘆號或問號帘睦,如果沒有就說明驅(qū)動狀態(tài)已經(jīng)好了袍患。否則可以下載一個手機助手類程序來安裝驅(qū)動先。
通過 USB 線連接好電腦和設(shè)備后確認(rèn)狀態(tài)竣付。
adb devices
如果能看到
xxxxxx device
說明連接成功诡延。
除了可以通過 USB 連接設(shè)備與電腦來使用 adb,也可以通過無線連接——雖然連接過程中也有需要使用 USB 的步驟古胆,但是連接成功之后你的設(shè)備就可以在一定范圍內(nèi)擺脫 USB 連接線的限制啦肆良!
操作步驟:
將 Android 設(shè)備與要運行 adb 的電腦連接到同一個局域網(wǎng),比如連到同一個 WiFi逸绎。
將設(shè)備與電腦通過 USB 線連接惹恃。
應(yīng)確保連接成功(可運行adb devices看是否能列出該設(shè)備)。
讓設(shè)備在 5555 端口監(jiān)聽 TCP/IP 連接:
adb tcpip 5555
斷開 USB 連接棺牧。
找到設(shè)備的 IP 地址巫糙。
一般能在「設(shè)置」-「關(guān)于手機」-「狀態(tài)信息」-「IP地址」找到,也可以使用下文里查看設(shè)備信息 - IP 地址一節(jié)里的方法用 adb 命令來查看颊乘。
通過 IP 地址連接設(shè)備参淹。
adb connect
這里的就是上一步中找到的設(shè)備 IP 地址。
確認(rèn)連接狀態(tài)疲牵。
adb devices
如果能看到
:5555 device
說明連接成功承二。
如果連接不了,請確認(rèn) Android 設(shè)備與電腦是連接到了同一個 WiFi纲爸,然后再次執(zhí)行adb connect 那一步亥鸠;
如果還是不行的話,通過adb kill-server重新啟動 adb 然后從頭再來一次試試识啦。
斷開無線連接
命令:
adb disconnect
注:需要 root 權(quán)限负蚊。
上一節(jié)「無線連接(需要借助 USB 線)」是官方文檔里介紹的方法,需要借助于 USB 數(shù)據(jù)線來實現(xiàn)無線連接颓哮。
既然我們想要實現(xiàn)無線連接家妆,那能不能所有步驟下來都是無線的呢?答案是能的冕茅。
在 Android 設(shè)備上安裝一個終端模擬器伤极。
已經(jīng)安裝過的設(shè)備可以跳過此步。我使用的終端模擬器下載地址是:Terminal Emulator for Android Downloads
將 Android 設(shè)備與要運行 adb 的電腦連接到同一個局域網(wǎng)姨伤,比如連到同一個 WiFi哨坪。
打開 Android 設(shè)備上的終端模擬器,在里面依次運行命令:
su
setprop service.adb.tcp.port 5555
找到 Android 設(shè)備的 IP 地址乍楚。
一般能在「設(shè)置」-「關(guān)于手機」-「狀態(tài)信息」-「IP地址」找到当编,也可以使用下文里查看設(shè)備信息 - IP 地址一節(jié)里的方法用 adb 命令來查看。
在電腦上通過 adb 和 IP 地址連接 Android 設(shè)備徒溪。
adb connect
這里的就是上一步中找到的設(shè)備 IP 地址忿偷。
如果能看到connected to :5555這樣的輸出則表示連接成功金顿。