adb原理
參考文檔
How ADB works http://www.cnblogs.com/ifantastic/p/5186362.html
http://blog.csdn.net/stpeace/article/details/24933813
Adb是Android調試橋的縮寫。在看Adb命令前,先弄清楚原理,一圖頂千言。
總結下:無論是執行adb命令和還是調用ddmlib庫都是作為adb client連接到pc上的adb server服務(默認端口為5037)。adb server服務再連接到各個設備上運行着的adbd服務(默認監聽端口為5555),建立連接后adb server負責在adb client 和adbd之間轉發信息。
方式一是直接通過TCP連接設備。方式二是通過USB連接設備。
Adb命令
help 幫助信息
version 版本信息
服務啟停
adb start-server 啟動adb server
adb kill-server 停止adb server
設備相關
adb devices 顯示所有設備(格式為 串號和狀態)
- -l 顯示qulifiers (如: product:MT7-CL00 model:HUAWEI_MT7_CL00 device:hwmt7)
adb wait-for-device device online前一直阻塞,可以作為不需要系統完全啟動就能執行的命令的前綴使用:如 adb wait-for-device shell getprop
adb get-state
adb get-serialno
adb get-devpath
adb status-window 持續顯示設備狀態(有變化時更新)
adb connect <host>[:<port>] 通過TCP網絡連接設備,即上圖中的方式一。(默認端口:5555)
adb disconnect <host>[:<port>] 斷開通過網絡連接的設備
adb root 以root權限重啟設備上的adbd服務
adb usb 重啟adbd服務,監聽USB
adb tcpip <port> 重啟adbd服務,監聽指定的TCP端口
adb指定目標設備選項(可以沒有)
-a 所有設備
-d USB連接的設備
-e 模擬器設備
-s <Serial-No> 按串號指定設備
-p <product name or path> 不清楚
-H <server_host> 指定連接的adb server主機
-P <server_port> 指定連接的adb server端口
adb remout 重新以讀寫模式掛載/system 和 /vendor 分區
adb reboot 重啟設備
- bootloader 重啟進入bootloader模式
- recovery 重啟並進入recovery模式
文件傳送
adb pull <path-dev> <path-pc> 把設備中的文件或目錄拷貝到PC端
- -p 顯示進度
adb push <path-pc> <path-dev> 把PC端文件或目錄拷貝到設備
- -p 顯示進度
- -a 拷貝時間戳和模式
adb sync [<directory>] 把PC端改動的內容拷貝到設備(默認為/system,/vendor,/data)
- -l 只列出,不拷貝
adb install <apkfile-pc> 安裝應用
- -r 替換
- -s 安裝到SD卡
可能的錯誤信息:
adb uninstall <package-name> 移除應用
- -k 保留數據和緩存目錄
調用Android shell命令
adb shell 進入shell環境
adb shell [shell-cmd] 執行shell命令
android shell命令總結:http://www.cnblogs.com/pixy/p/4741532.html
網絡相關
adb forward <spec-local> <spec-remote> socket定向綁定:
spec格式為:
tcp:<port>
localabstract:<unix domain socket name>
localreserved:<unix domain socket name>
localfilesystem:<unix domain socket name>
dev:<character device name>
jdwp:<process pid> (remote only)
--no-rebind 如果local端已經綁定則失敗
adb forward --remove <spec-local> 移除指定的定向綁定
adb forward --remove-all
adb reverse --list 顯示所有從設備發出的反向socket連接
adb reverse <spec-remote> <spec-local> 反向socket綁定
spec格式為:
tcp:<port>
localabstract:<unix domain socket name>
localreserved:<unix domain socket name>
localfilesystem:<unix domain socket name>
--norebind <spec-remote>已經綁定則失敗
adb reverse --remove <spec-remote> 移除反向綁定
adb reverse --remove-all 移除所有反向綁定
adb ppp <tty> [parm] 通過USB運行PPP
logcat
adb logcat [option] [FILTER-SPECS] 輸出日志數據。可以重定向到文件:adb logcat>d:\logcat.txt
options:
-s |
沉默默認的過濾器,以下兩種方式等效 |
-v <format> |
指定輸出格式,默認為 |
-f <file> |
Log to file |
-c |
clear(flush) 所有log,然后退出 |
-d |
dump log,退出 |
-g |
獲取log循環緩沖大小,退出 |
-b <buffer> |
請求其他循環緩沖,main(default), radio, events |
-B |
output log in binary |
FILTER-SPECS: tagName:[PRIORITY]...
PRIORITY:
V |
Verbose |
D |
Debug |
I |
Info |
W |
Warn |
E |
Error |
F |
Fatal |
S |
Silent (supress all output) |
tagName和priority都可以用*作為通配符, logcat命令中必須使用-s選項或加*:s才能過濾掉無關的log
調試相關
adb bugreport 顯示dumpsys, dumppstate, logcat信息
adb jdwp 顯示有效地jdwp (java debug wire protocol) 進程
其他
adb emu <emu_command> 模擬器控制台命令
adb backup 備份系統數據到文件
- -f <file> 指定文件名(省確為backup.ab)
- -apk | -noapk 是否備份.apk(默認為-noapk)
- -obb | -noobb 是否備份apk擴展文件.obb,默認為noobb
- -shared | -noshared 是否備份Shared Storeage,SD 卡內容(默認為noshared)
- -all 備份所有安裝的應用
- -system|-nosystem -all是否包括系統應用,(默認為system)
- [<packages...>] 要備份的應用列表。如果有-all或-shared,可以沒有此項。
adb restore <file> 從備份文件恢復數據。
adb disable-verity
adb keygen <file> 生成密鑰對,<file>文件中存放私鑰,<file>.pub中存放公鑰。已存在文件會被覆蓋。