adb命令总结
adb使用的端口是:5037,该端口一旦被占用会导致使用adb命令时无法连接到设备。PC端的手机助手,如360手机助手,应用宝等这类软件自带的adb程序可能会与Android SDK下的adb程序产生冲突。
运行在Android设备上的adb后台进程:
adb shell ps | grep sdbd ,(Windows请使用findstr替代grep)可以找到该后台进程
以下将adb命令分三部分进行介绍,adb命令、adb shell命令
adb命令:
- adb get-state,获取设备的状态
设备状态有三种:device(设备连接正常),offline(连接出现异常,设备无响应),unknown(没有连接设备)
- adb kill-server ,结束adb服务,adb start-server启动adb服务
- adb bugreport , 打印dumpsys、dumpstate、logcat的输出,用来分析错误
- eg: adb bugreport > d:\bugreport.log
- adb install , 安装应用,覆盖安装是使用-r选项(apk)
- adb uninstall 应用的包名(区别于apk文件名) ,卸载应用
- -k选项,卸载时保存数据和缓存目录
- adb pull ,将Android设备上的文件或文件夹复制到本地
- adb push 本地文件路径 Android设备上的路径 , 推送本地文件至Android设备
- adb root , adb remount ,只针对类似小米开发版的手机有用,可以直接以这两个命令获取root权限,并挂载系统文件系统为可读写状态
- adb reboot , 重启Android设备
- adb forward , 将宿主机上的某个端口重定向到设备的某个端口
- eg : adb forward tcp:1314 tcp:8888 (执行该命令后,所有发往1314端口的信息、数据都会转发到Android设备的8888端口上,因此可以远程控制Android设备)
adb shell命令
adb shell命令是调用的Android系统中的命令,这些Android特有的命令都放在了Android设备的system/bin目录下
pm(Package Manager,包管理器)
可以获取到一些安装在Android设备上的应用信息
- pm list package 列出安装在设备上的应用
- eg : adb shell pm list package (不带选项,列出所用的应用的包名)
- -s : 列出系统应用 adb shell pm list package -s
- -3 :列出第三方应用 adb shell pm list package -3
- -f :列出应用包名及对应的apk名及存放位置 adb shell pm list package -f
- -i :列出应用包名及其安装来源 adb shell pm list package -i
- 命令最后增加filter:过滤关键字,可以很方便地查找自己想要找的应用
- 参数组合使用,例如,查找第三方应用中“知乎”的包名、apk存放位置、安装来源:
- adb shell pm list package -f -3 -i zhihu
- pm path 列出对应包名的 .apk位置
- eg: adb shell pm path com.tencent.mobileqq
- pm list instrumentation , 列出含有单元测试case的应用,后面可跟参数-f(与pm list package 中一样)
- pm dump 包名,列出指定应用的dump信息,里面有各种信息,自行查看
- eg: adb shell pm dump com.tencent.mobileqq
- pm install ,目标apk存放于Android设备上,用pm install安装,若目标apk存放于PC端,则用adb install安装
- pm uninstall 包名 , 卸载应用
- pm clear , 清楚应用数据
- pm set-install-location , pm get-install-location ,设置应用安装位置,获取应用安装位置
- [0/auto] : 默认为自动
- [1/internal] : 默认为安装在手机内部
- [2/external] : 默认安装在外部存储
am
- am start , 启动一个Activity
- eg : adb shell am start -n com.android.camera/.Camera (启动相机)
- 先停止目标应用,再启动: adb shell am start -S com.android.camera/.Camera
- 等待应用完成启动 : adb shell am start -W com.android.camera/.Camera
- 启动默认浏览器打开一个网页: adb shell am start -a android.intent.action.VIEW -d http://testhome.com
- 启动拨号器拨打10086 : adb shell am start -a android.intent.action.CALL -d tel:10086
- am instrument ,启动一个instrumentation,单元测试或者Robotium会用到
- am monitor ,监控crash与ANR
- am force-stop 包名 , 结束应用
- am startservice , 启动一个服务
- am broadcast , 发送一个广播
input
这个命令可以向Android设备发送按键事件
- input text , 可以发送文本内容,不能发送中文
- eg : adb shell input text test123456 前提先将键盘设置为英文键盘
- input keyevent ,发送按键事件
- eg : adb shell input keyevent KEYCODE_HOME 模拟按下home键
- input tap ,对屏幕发送一个触摸事件
- eg : adb shell input tap 500 500
- input swipe ,滑动事件
- eg :adb shell input swipe 900 500 100 500 (从右往左滑动屏幕)
- adb shell input swipe 500 500 501 501 2000 (版本不低于4.4,可以模拟长按事件,其实就是在小的距离内,在较长的持续时间内进行滑动,最后表现出来的结果就是长按动作)
screencap
- adb shell screencap -p /sdcard/screen.png 截图,保存至sdcard目录
screenrecord
- 4.4新增的录制命令 adb shell screenrecord sdcard/record.mp4 执行命令后操作手机,CTRL+C结束录制,录制结果保存至sdcard
uiautomator
- 执行UI automation tests,获取当前界面的控件信息 runtest : executes UI automation tests RunTestCommand.java dump :获取控件信息,DumpCommand.java
- eg : adb shell uiautomator dump (不加[file]选项时,默认存放在sdcard下)
ime
- 列出设备上的输入法 adb shell ime list -s
- 选择输入法 adb shell ime set com.baidu.input_mi/.ImeService
wm
- 获取设备分辨率 adb shell wm size
getprop
查看Android设备的参数信息,只运行adb shell getprop , 结果以key:value键值对的形式显示,如要获取某个key值:
adb shell getprop ro.build.version.sdk (获取设备的sdk版本)