ADB全稱Android Debug Bridge,Android 開發(fā)中筑累, 我們在開發(fā)過程中經(jīng)常使用這個工具來操作Android系統(tǒng)袱蜡,是 Android 開發(fā)者必須掌握的。
功能介紹
ADB主要功能有:
在Android設(shè)備上運行Shell(命令行)
管理模擬器或設(shè)備的端口映射
在計算機(jī)和設(shè)備之間上傳/下載文件
將電腦上的本地APK軟件安裝至Android模擬器或設(shè)備上
使用配置
一個這么常用工具慢宗, Google 早就在 Android SDK 中幫我們集成了坪蚁,就放在\android-sdk-windows\platform-tools這個目錄下面,我們只需要配置一下環(huán)境變量就可以使用了镜沽。作為開發(fā)者敏晤,配置環(huán)境變量這種小兒科我就不贅述了......
ADB 用法
查詢模擬器或手機(jī)狀態(tài)
查看 adb 服務(wù)端連接的模擬器或手機(jī)可以幫助更好的使用 adb 命令,這可以通過 devices 命令來列舉當(dāng)前連接的設(shè)備:
adb devices
執(zhí)行結(jié)果是 adb 為每一個設(shè)備輸出以下狀態(tài)信息:
序列號(serialNumber):由 adb 創(chuàng)建用于唯一標(biāo)識設(shè)備的字符串缅茉,格式是 <設(shè)備類型>-<端口號>嘴脾,例如: emulator-5554
連接狀態(tài)(state),其值是可能是下面的任意一種:
offline — 未連接或未響應(yīng)
device — 表示設(shè)備已經(jīng)連接到服務(wù)端蔬墩。但需要注意的是译打,這個狀態(tài)并不表示 Android 系統(tǒng)已經(jīng)完全啟動起來并且可操作,因為系統(tǒng)在啟動的過程中就已經(jīng)連接 adb 拇颅,但這個狀態(tài)是正常的可操作狀態(tài)奏司。
no device – 表示沒有任何設(shè)備連接(樓主測試過程中沒有碰到過 no device 的情況,沒連接設(shè)備就沒任何輸出)
操作指定模擬器或手機(jī)
如果有多個模擬器或手機(jī)正在運行樟插,當(dāng)使用 adb 命令的時候就需要指定目標(biāo)設(shè)備韵洋,這可以通過使用 -s 選項參數(shù)實現(xiàn),用法如下:
adb -s < serialNumber > < command >
// 例如在 emulator-5556 設(shè)備上安裝應(yīng)用:
adb -s emulator-5556 install xxxx.apk
這里補(bǔ)充一點黄锤, Google 官方給出在多設(shè)備的情況下搪缨,不用 -s 參數(shù)指定目標(biāo)設(shè)備的快捷方式。
adb -e install xxxx.apk
//同理鸵熟,如果有多個設(shè)備副编,但只有一個真機(jī),可以使用如下命令快速發(fā)送命令
adb -d install xxxx.apk
安裝應(yīng)用
使用 adb install 命令可以從開發(fā)用電腦中復(fù)制應(yīng)用程序并且安裝到模擬器或手機(jī)上旅赢, adb install 命令必須指定待安裝的.apk文件的路徑齿桃。
adb install [-lrtsdg] < path_to_apk >
(-l : 鎖定該程序)
(-r : 重新安裝該程序惑惶,保留應(yīng)用數(shù)據(jù))
(-t : allow test packages)
(-s : 將應(yīng)用安裝到 SD卡煮盼,不過現(xiàn)在手機(jī)好像都沒有 SD卡 了吧)
(-d : 允許降版本號安裝,當(dāng)然只有 debug 包才能使用)
(-g : 安裝完默認(rèn)授予所有運行時權(quán)限)
卸載應(yīng)用
上面介紹了安裝應(yīng)用命令带污,既然有安裝應(yīng)用的命令僵控,那當(dāng)然有卸載應(yīng)用的命令。卸載應(yīng)用命令的格式如下:
// < package > 表示要卸載應(yīng)用的包名
adb uninstall [-k] < package > (-k:不刪除程序運行所產(chǎn)生的數(shù)據(jù)和緩存目錄)
與模擬器或手機(jī)傳輸文件
使用 adb 命令 pull 和 push 能從 Android 設(shè)備拷貝或復(fù)制文件到 Android 設(shè)備鱼冀。跟 install 命令不同报破,pull 和 push 命令允許拷貝和復(fù)制文件到任何位置悠就。
- pull
adb pull [-a] < remote_path > < local_path > (-a:保留文件時間戳及屬性)
舉個栗子,我想把應(yīng)用中的數(shù)據(jù)庫文件復(fù)制到本地目錄下:
adb pull sdcard/contacts_app.db
- push
adb push < local_path > < remote_path >
舉個栗子充易,我想把桌面的 log.txt 復(fù)制到手機(jī)的 dev 目錄下:
adb push .../log.txt /dev
無線調(diào)試
平時我們都是使用 USB調(diào)試梗脾,但是有時候設(shè)備老化或者數(shù)據(jù)線連接不穩(wěn)定, USB 調(diào)試就不好使了盹靴。這時我們就想能不能拋開這根數(shù)據(jù)線呢炸茧?當(dāng)然可以,adb 也是支持通過 WIFI 進(jìn)行調(diào)試了稿静,使用方式如下:
首先梭冠,你要將 Android 設(shè)備和 裝有 adb 的電腦連接到同一 Wi-Fi 網(wǎng)絡(luò)。其次改备,你需要配置好防火墻控漠,否則很有可能導(dǎo)致 Wi-Fi 調(diào)試不能使用。
使用 USB數(shù)據(jù)線 將手機(jī)連接到電腦悬钳。
-
設(shè)置目標(biāo)設(shè)備監(jiān)聽 5555端口 的 TCP/IP 連接盐捷。
adb tcpip 5555
斷開手機(jī)與電腦的 USB 連接。
查看手機(jī)的 IP地址 他去。
-
通過 IP 連接手機(jī)
adb connect < device_ip_address >
這時就可以使用 adb devices 確認(rèn)手機(jī)是否連接到電腦上了毙驯。
通過以上步驟,就可以開心的享用 WiFi 調(diào)試了灾测。如果沒有正常連接爆价,可以按照下面的步驟檢查:
- 檢查電腦和手機(jī)是否還在同一個 WiFi 網(wǎng)絡(luò)下
- 重新執(zhí)行一次 adb connect <device_ip_address> 命令
- 重啟 adb 服務(wù),然后重頭再來
- 檢查是否是防火墻的設(shè)置問題
查看設(shè)備的 log
在日常開發(fā)中媳搪,我們經(jīng)常要查看日志進(jìn)行調(diào)試我們的app铭段,adb 提供了強(qiáng)大的日志查看命令。 adb logcat 命令格式是這樣的:
adb logcat [選項] [過濾項]
(-s : 設(shè)置輸出日志的標(biāo)簽, 只顯示該標(biāo)簽的日志)
(-f : 將日志輸出到文件, 默認(rèn)輸出到標(biāo)準(zhǔn)輸出流中, -f 參數(shù)執(zhí)行不成功)
(-r : 按照每千字節(jié)輸出日志, 需要 -f 參數(shù), 不過這個命令沒有執(zhí)行成功)
(-n : 設(shè)置日志輸出的最大數(shù)目, 需要 -r 參數(shù), 這個執(zhí)行 感覺 跟 adb logcat 效果一樣)
(-v : 設(shè)置日志的輸出格式, 注意只能設(shè)置一項)
(-c : 清空所有的日志緩存信息)
(-d : 將緩存的日志輸出到屏幕上, 并且不會阻塞)
(-t : 輸出最近的幾行日志, 輸出完退出, 不阻塞)
(-g : 查看日志緩沖區(qū)信息)
(-b : 加載一個日志緩沖區(qū), 默認(rèn)是 main, 下面詳解)
(-B : 以二進(jìn)制形式輸出日志)
舉幾個常用的栗子秦爆,場景如下:
- 應(yīng)用調(diào)試過程中序愚,我想看全部日志,并想看日志輸出時間。
adb logcat -v time
- 日志輸出后發(fā)現(xiàn)在終端控制臺里查看不太方面等限,想輸出到文件中查看爸吮。
adb logcat -v time >xxx.txt
- 應(yīng)用崩潰了,我現(xiàn)在只關(guān)心崩潰日志望门。
adb logcat -v time *:e
- 崩潰解決了形娇,心安了,現(xiàn)在想看某一個邏輯完整的執(zhí)行過程(日志TAG:######)筹误。
adb logcat -s ######
- 前面打了很多日志了桐早,這時我想清空一下緩存區(qū)的日志,開始打新的日志。
adb logcat -c
這里就介紹這些基本且常用的命令的使用哄酝,如果你想深入了解一下友存,可以到 Android調(diào)試橋 具體學(xué)習(xí)。
重啟手機(jī)
有時候陶衅,手動關(guān)機(jī)太麻煩屡立,那就來個命令行吧~
adb reboot
以 root 權(quán)限開啟 adb 守護(hù)進(jìn)程
很多時候我們需要 root 手機(jī)以獲得高權(quán)限操作手機(jī),此時就需要下面的命令了:
// 此命令會重啟守護(hù)進(jìn)程
adb root
// root 成功后需要重新掛在磁盤
adb remount
開啟或關(guān)閉 adb 服務(wù)
在某些情況下需要重啟 adb 服務(wù)來解決問題搀军,比如 adb 無響應(yīng)侠驯。這時你可以通過 adb kill-server 來實現(xiàn)這一操作。
adb kill-server
kill 之后奕巍,通過 adb start-server 或者任意 adb 命令來重啟 adb 服務(wù)吟策。
adb start-server
總結(jié)
以上就是 adb 命令的常見用法,都是本人日常開發(fā)中使用頻率高的的止。有些不常用的 adb 命令沒有介紹檩坚,更多 adb 用法請見:Android調(diào)試橋。文中如有紕漏诅福,歡迎大家留言指出匾委。