一. Adb命令
Adb全称是Android Debug Bridge,翻译过来就是安卓调试桥,一种多用途的命令行工具,可以连接模拟器或者真实的安卓设备进行通信,他是一个包括三个组成的客户端-服务端程序
1.1 客户端是运行在我们的开发机器上,通过adb命令可以从shell调用客户端,其他Android工具,如ADT插件和DDMS也可以创建adb命令的客户端。
1.2 服务端是在开发机器后台运行的进程。服务器管理客户端和运行在模拟器或者真实设备上的adb守护(adb daemon)进程之间的通信
1.3 adb daemon是一个运行在模拟器或者真实安卓设备后台的而守护进程
Adb命令文件所在路径<sdk>/platform-tools/
当你运行一个adb的客户端的时候,首先会检查adb的服务端是否在运行,如果没有运行,那么会自动开启一个服务端进程。当服务端开启后,他会绑定本地的tcp端口5037,并且通过5037端口监听所有客户端发过来的命令
Adb使用
类别 |
命令 |
说明 |
备注 |
可选项 |
-d |
命令仅对USB设备有效 |
如果有多个USB设备就会返回错误 |
-e |
命令仅对运行中的模拟器有效 |
如果有多个运行中的模拟器就会返回错误 |
|
-s <serialNumber> |
命令仅对adb关联的特定序列号的模拟器或手机有效(例如 "emulator-5556"). |
如果不指定设备就会返回错误 |
|
一般项 |
devices |
输出所有关联的模拟器或手机设备列表 |
参见 Querying for Emulator/Device Instances以获得更多信息。 |
help |
输出adb支持的命令 |
|
|
version |
输出adb的版本号 |
|
|
调试项 |
logcat [<option>] [<filter-specs>] |
在屏幕上输出日志信息 |
|
bugreport |
为报告bug,在屏幕上输出dumpsys,dumpstate和 logcat数据 |
|
|
jdwp |
输出有效的JDWP进程信息 |
可以使用 forward jdwp:<pid> 转换端口以连接到指定的 JDWP 进程,例如: adb forward tcp:8000 jdwp:472 jdb -attach localhost:8000 |
|
数据项 |
install <path-to-apk> |
安装应用程序(用完整路径指定.apk文件) |
|
pull <remote> <local> |
从模拟器或手机COPY文件到开发机 |
|
|
push <local> <remote> |
从开发机COPY指定的文件到模拟器或手机 |
|
|
端口和网络项 |
forward <local> <remote> |
从本地端口转换连接到模拟器或手机的指定端口 |
端口可以使用以下格式表示: tcp:<portnum> local:<UNIX domain socket name> dev:<character device name> jdwp:<pid> |
ppp <tty> [parm]... |
通过USB运行UPP <tty> —PPP流中的tty。例如:/dev/omap_csmi_ttyl。 [parm]... — 0到多个PPP/PPPD 选项,例如 defaultroute, local, notty等等。 注意不用自动启动PPP连接 |
|
|
脚本项 |
get-serialno |
输出adb对象的序列号 |
参见 Querying for Emulator/Device Instances以获得更多信息。 |
get-state |
输出adb设备的状态 |
||
wait-for-device |
阻塞执行直到设备已经连接,即设备状态是 device. |
可以在其他命令前加上此项,那样的话adb就会等到模拟器或手机设备已经连接才会执行命令,例如: 注意该命令并不等待系统完全启动,因此不能追加需要在系统完全启动才能执行的命令,例如install 命令需要Android包管理器支持,但它必须在系统完全启动后才有效。下面的命令
会在模拟器或手机与adb发生连接后就执行install,但系统还没有完全启动,所以会引起错误。 |
|
服务端项 |
start-server |
检测adb服务进程是否启动,如果没启动则启动它。 |
|
kill-server |
终止服务端进程 |
|
|
Shell |
shell |
在目标模拟器或手机上启动远程SHELL |
参见 Issuing Shell Commands以获得更多信息。 |
shell [<shellCommand>] |
在目标模拟器或手机上执行shellCommand然后退出远程SHELL |
使用实例
1. –d 参数
-e 参数
-s < serialNumber > 参数,尖括号里的内容是必须的
2. devices命令
注意设备的状态包含三种:
Offline(不能调试仅是连接,原因很可能是adb与安卓系统不匹配) device(正常状态可调试) unauthorized(连接后不能调试,原因是未在手机上同意调试)
加上-l 参数会列出设备的详细信息,如果报错是error:protocol fault(no status),那从任务管理器杀掉各种手机助手的进程
help 命令,详细列出adb命令及参数的帮助文档
version 命令,显示adb版本
3. logcat 命令,查看设备日志
如果只有一台设备直接执行adb logcat就可以,
如果有多台,那么需要指定某一个设备执行adb –s 192.168.56.101 logcat
但是这个命令刷新日志会很快,我们的dos窗口不好查看,所以我们可以将结果重定向到一个文件,然后打开文件方便查看
查看logcat.txt文件内容如下:
logcat 的-f参数是将日志保存到文件,这个文件是在设备上,使用如下
logcat 本身会显示出很多日志来,那么我们可以通过筛选来获得我们想要的应用的日志,直接使用adb logcat时的用法
先使用adb shell进入shell环境再logcat
bugreport命令,会将dumpsys,dumpstate以及logcat的信息全部显示
dumpsys:安卓系统命令,获取android服务进程的各个信息
dumpstate:安卓系统命令,系统状态信息,里面比较全,包括手机当前的内存信息、cpu信息等等
使用和之前的一样,可以重定向到文件
adb bugreport>Desktop\bugreport.log
单独显示dumpsys和dumpstate的信息,使用如下:
adb shell dumpsys>Desktop\dumpsys.log
adb shell dumpstate>Desktop\dumpstate.log
4. install 命令,安装app文件到设备
如果已经安装了,需要再次安装需要加参数-r,否则会失败
有安装就会有卸载uninstall
pull命令,从手机设备COPY指定的文件到开发机
push命令,从开发机copy指定文件到设备
5. start-server命令,检查服务状态,如果没启动那就启动
kill-server 命令,杀死所有adb进程
通常当我们在执行adb时碰到error或者设备状态不对,可以尝试重启adb服务,也就是使用这两命令,就犹如网管的重启电脑大杀器一样
6. shell命令,进入安卓shell环境,这里的shell环境就是指安卓系统
shell <command> 命令,直接执行shell环境下的命令,例子如下:
这里用的vmstat命令会显示服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况
7. root 命令,以root身份重启adbd守护进程,对于未获得root权限的手机,这个命令执行时会报错的
usb 命令,在usb上重启守护进程的监听
tcpip <port> 命令,在特定端口上以tcpip协议重启守护进程的监听
下面实例演示手机wifi连接电脑
先使用usb连接手机和电脑,查看
再使用adb tcpip 8787 重启守护进程
然后查看手机设备的ip,这里我的是192.168.1.109,注意这里需要保持电脑ip和手机ip能够互相ping通,使用adb connect 192.168.1.109:8787 连接设备
再次查看连接的设备
这里显示两个,一个是usb的连接,一个是wifi连接,拔掉数据线,我们依然可以针对该设备进行调试操作
断开wifi连接命令
再次转换为usb,使用命令adb usb即可
二. Dos命令
2.1 cd命令,切换目录
注意切换盘符不能使用cd e:这样的形式,必须直接使用e:就可以切换
cd workspace 进入e盘workspace目录
cd ..返回上一级目录,cd ..\..\ 返回上两级目录
2.2 dir 查看当前目录都有哪些文件
2.3 md 创建目录
rd /s /q testdir 删除testdir这个目录及其以下的所有文件
type test.txt 查看文件内容
del test.txt删除文件
2.4 netstat –ano|findstr 4723 查看端口占用情况,下面截图表示该端口已占用,最后一列的数字是该进程的id
taskkill -F -pid 7812 按照进程号强杀某进程
taskkill -F -im name 按照进程名称强杀进程
三.安卓shell命令
3.1 cd命令,切换目录
cd ..返回上一级
cd –返回上次的目录
cd ~返回当前用户的家目录
pwd 命令,显示当前所在目录路径
3.2 ls 命令显示当前目录下的所有文件(不包括隐藏文件)
ll 命令是以上列表的形式显示所有文件(不包括隐藏文件),注意第一列的第一个字符,-表示是文件,d表示是目录,ll实际上是ls –l的简写
3.3 rm –rf <文件或者目录>表示强制删除文件或者目录,-r表示递归删除 –f表示强制不用询问
mkdir <目录名称> 创建目录
3.4 cat <文件名称> 查看文件内容