参考文档
How ADB works /ifantastic/p/5186362.html
/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-devicedevice online前一直阻塞,可以作为不需要系统完全启动就能执行的命令的前缀使用:如adb wait-for-device shell getprop
adb get-state
adb get-serialno
adb get-devpath
adb status-window持续显示设备状态(有变化时更新)
adb connect [:]通过TCP网络连接设备,即上图中的方式一。(默认端口:5555)
adb disconnect[:]断开通过网络连接的设备
adb root以root权限重启设备上的adbd服务
adb usb重启adbd服务,监听USB
adb tcpip重启adbd服务,监听指定的TCP端口
adb指定目标设备选项(可以没有)
-a 所有设备
-dUSB连接的设备
-e模拟器设备
-s 按串号指定设备
-p 不清楚
-H 指定连接的adb server主机
-P 指定连接的adb server端口
adb remout重新以读写模式挂载/system 和 /vendor 分区
adb reboot重启设备bootloader重启进入bootloader模式
recovery重启并进入recovery模式
文件传送
adb pull把设备中的文件或目录拷贝到PC端-p显示进度
adb push把PC端文件或目录拷贝到设备-p显示进度
-a拷贝时间戳和模式
adb sync [] 把PC端改动的内容拷贝到设备(默认为/system,/vendor,/data)-l 只列出,不拷贝
adb install安装应用-r替换
-s安装到SD卡
可能的错误信息:
adb uninstall移除应用-k保留数据和缓存目录
调用Android shell命令
adb shell进入shell环境
adb shell [shell-cmd]执行shell命令
网络相关
adb forwardsocket定向绑定:
spec格式为:
tcp:localabstract:localreserved:localfilesystem:dev:jdwp:(remote only)
--no-rebind如果local端已经绑定则失败
adb forward --remove 移除指定的定向绑定
adb forward --remove-all
adb reverse --list显示所有从设备发出的反向socket连接
adb reverse 反向socket绑定
spec格式为:
tcp:localabstract:localreserved:localfilesystem:
--norebind已经绑定则失败
adb reverse --remove 移除反向绑定
adb reverse --remove-all移除所有反向绑定
adb ppp [parm]通过USB运行PPP
logcat
adb logcat [option] [FILTER-SPECS]输出日志数据。可以重定向到文件:adb logcat>d:\logcat.txt
options:
-s沉默默认的过滤器,以下两种方式等效
logcat -s tagName:I
logcat tagName:I *:s
-v指定输出格式,默认为
-fLog to file
-cclear(flush) 所有log,然后退出
-ddump log,退出
-g获取log循环缓冲大小,退出
-b请求其他循环缓冲,main(default), radio, events
-Boutput log in binary
FILTER-SPECS: tagName:[PRIORITY]...
PRIORITY:
VVerbose
DDebug
IInfo
WWarn
EError
FFatal
SSilent (supress all output)
tagName和priority都可以用*作为通配符,logcat命令中必须使用-s选项或加*:s才能过滤掉无关的log
调试相关
adb bugreport显示dumpsys, dumppstate, logcat信息
adb jdwp显示有效地jdwp (java debug wire protocol)进程
其他
adb emu模拟器控制台命令
adb backup备份系统数据到文件-f 指定文件名(省确为backup.ab)
-apk | -noapk是否备份.apk(默认为-noapk)
-obb | -noobb是否备份apk扩展文件.obb,默认为noobb
-shared | -noshared是否备份Shared Storeage,SD 卡内容(默认为noshared)
-all备份所有安装的应用
-system|-nosystem-all是否包括系统应用,(默认为system)
[]要备份的应用列表。如果有-all或-shared,可以没有此项。
adb restore从备份文件恢复数据。
adb disable-verity
adb keygen生成密钥对,文件中存放私钥,.pub中存放公钥。已存在文件会被覆盖。