adb是什么
adb的全称为Android Debug Bridge,起到调试桥的作用。
adb是作用
利用adb工具的前提是在手机上打开usb调试,然后通过数据线连接电脑。在电脑上使用命令模式来操作手机:重启、进入recovery、进入fastboot、推送文件功能,运行设备的shell(命令行),管理模拟器或设备的端口映射,计算机和设备之间上传/下载文件, 将本地apk软件安装至模拟器或android设备等。
强调:针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb 命令熟记于心, 将会为 Android 测试带来很大的方便,其中很多命令将会用于自动化测试的脚本当中,且也会用到执行rf脚本的命令当中。
adb的端口
adb的端口为5037,这里建议测试人员尽量不要在电脑上安装这类手机助手,因为其自带的 adb 程序可能会与 Android SDK 下的 adb 程序产生冲突,5037 端口被占用,导致使用 adb 命令时无法连接到设备
如果adb的端口被占用,我们需要查看哪个程序占用,可以在CMD敲命令:
查看所有端口:netstat -ano
查看是否被占用,如果下图有5037端口证明已被占用,我们去任务管理器关掉即可
也可直接输入命令:tasklist|findstr “5037”,回车,查看是哪个进程或者程序占用了5037端口
然后输入命令:taskkill /f /t /im XXXX.exe,就能结束这个进程
最后再打开adb就可以成功了。
接下来我将 adb 命令分为两部分进行介绍,adb 命令、adb shell 命令
两者主要区别:adb 命令是 adb 这个程序自带的一些命令,而 adb shell 则是调用的 Android 系统中的命令,这些 Android 特有的命令都放在了 Android 设备的 system/bin 目录下
adb常用命令
可敲命令:adb help,会列出所有的选项说明及子命令,下面将介绍我们常用的命令
1、adb devices
获取设备列表及设备状态,即查看是否成功连接到手机
2、adb kill-server , adb start-server ,
结束 adb 服务, 启动 adb 服务,通常两个命令一起用
一般在连接出现异常,使用 adb devices 未正常列出设备, 可以使用 kill-server,然后运行 start-server 进行重启服务
3、adb logcat >电脑磁盘路径
把日志输出到电脑磁盘上,方便查看,之前可用命令:adb logcat -c清除日志的缓存
当不需要抓取日志可按下ctrl + c 按键,停止输出日志信息
4、adb install apk路径
安装应用,覆盖安装是使用 -r 选项
5、db uninstall apk包名
卸载应用,后面跟的参数是应用的包名
6、adb pull 手机存储路径 电脑路径
将 Android 设备上的文件或者文件夹复制到本地
例如复制 test 下的 a.txt 文件到C 盘:
adb pull test/a.txt d:
如果需要重命名为 b.txt:
adb pull test/al.txt d:\b.txt
备注:注意权限,复制系统权限的目录下的文件,需要 root ,并且一般的 Android 机 root 之后并不能使用命令去复制,而需要在手机上使用类似于 RE 的文件浏览器,先对系统的文件系统进行挂载为可读写后,才能在手机上复制移动系统文件
7、adb push 电脑路径 手机存储路径
adb push /Users/xxxx/xxx.txt /sdcard/xxx
8、adb root , adb remount
只针对类似小米开发版的手机有用,可以直接已这两个命令获取 root 权限,并挂载系统文件系统为可读写状态
9、adb reboot
重启 Android 设备
10、adb reboot-bootloader
重启设备,进入 fastboot 模式
11、adb reboot recovery ,
重启设备,进入 recovery 模式,经常刷机的同学比较熟悉这个模式
12、adb forward
将 宿主机上的某个端口重定向到设备的某个端口
lieu:adb forward tcp:1314 tcp :8888
执行该命令后所有发往宿主机 1314 端口的消息、数据都会转发到 Android 设备的 8888 端口上,因此可以通过远程的方式控制 Android 设备。
13、adb connect
无线远程连接 Android 设备
前提:手机、PC处于相同的网络下,手机 root ,安装应用 adbWireless ,启动应用后点击界面中间的按钮:
运行 adb connect 192.168.1.102 , 即可通过无线的方式连接手机,缺点是速度比较慢
adb shell常用命令
1、adb shell pm list package
列出安装在设备上所有的应用的包名
2、adb shell pm list package -s
列出系统应用
3、adb shell pm list package -3
列出第三方应用
4、adb shell pm list package -f
列出应用包名及对应的apk名及存放位置
5、adb shell pm list package -i
列出应用包名及其安装来源
命令最后增加不完整报名:即过滤关键字,可以很方便地查找自己想要的应用
6、adb shell pm list package -f -3 -i zhihu
参数组合使用,例如,查找三方应用中知乎的包名、apk存放位置、安装来源:
package:/data/app/com.zhihu.android-1.apk=com.zhihu.android installer=com.xiaomi.market
7、adb shell pm install
安装应用
目标 apk 存放于 PC 端,请用 adb install 安装
目标 apk 存放于 Android 设备上,请用 pm install 安装
8、adb shell pm uninstall ,
卸载应用,同 adb uninstall , 后面跟的参数都是应用的包名
9、adb shell pm clear
清除应用数据
10、adb shell am start -n
启动一个 Activity,以启动系统相机应用为例
启动相机
adb shell am start -n com.android.camera/.Camera
Starting: Intent { cmp=com.android.camera/.Camera }
11、adb shell am start -S
先停止目标应用,再启动
db shell am start -S com.android.camera/.Camera
Stopping: com.android.camera
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.android.camera/.Camera }
12、adb shell am monitor
监控 crash 与 ANR
13、adb shell am force-stop
强制停止应用
以上则是adb常用的命令了,还有monkey随机测试涉及的adb shell 命令和涉及执行RF脚本的adb命令会在另外两篇文章写到,大家可以关注一下