一、adb命令和adb shell命令的区别
adb 命令是 adb 这个程序自带的一些命令,而 adb shell 则是调用的 Android 系统中的命令,这些 Android 特有的命令都放在了 Android 设备的 system/bin 目录下
二、一些常用的adb shel命令简介
pm
Package Manager , 可以获取到一些安装在 Android 设备上的应用信息
pm 的源码 Pm.java , 直接运行 adb shell pm 可以获取到该命令的帮助信息
l pm list package 列出安装在设备上的应用
不带任何选项:列出所有的应用的包名
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
l pm path 列出对应包名的 .apk 位置
adb shell pm path com.tencent.mobileqq
l pm list instrumentation , 列出含有单元测试 case 的应用,后面可跟参数 -f (与 pm list package 中一样),以及 [TARGET-PACKAGE]
l pm dump , 后跟包名,列出指定应用的 dump 信息,里面有各种信息,自行查看
adb shell pm dump com.tencent.mobileqq
l pm install , 安装应用
目标 apk 存放于 PC 端,请用 adb install 安装
目标 apk 存放于 Android 设备上,请用 pm install 安装
l pm uninstall , 卸载应用,同 adb uninstall , 后面跟的参数都是应用的包名
l pm clear , 清除应用数据
l pm set-install-location , pm get-install-location , 设置应用安装位置,获取应用安装位置
[0/auto]:默认为自动
[1/internal]:默认为安装在手机内部
[2/external]:默认安装在外部存储
am
am 源码 Am.java
l am start , 启动一个 Activity,已启动系统相机应用为例
启动相机
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://testerhome.com
启动拨号器拨打 10086
adb shell am start -a android.intent.action.CALL -d tel:10086
l am instrument , 启动一个 instrumentation , 单元测试或者 Robotium 会用到
l am monitor , 监控 crash 与 ANR
adb shell am monitor
l am force-stop , 后跟包名,结束应用
l am startservice , 启动一个服务
l am broadcast , 发送一个广播
input
这个命令可以向 Android 设备发送按键事件,其源码 Input.java
l input text , 发送文本内容,不能发送中文
adb shell input text test123456
前提先将键盘设置为英文键盘
l input keyevent , 发送按键事件,KeyEvent.java
adb shell input keyevent KEYCODE_HOME
l input tap , 对屏幕发送一个触摸事件
adb shell input tap 500 500
点击屏幕上坐标为 500 500 的位置
l input swipe , 滑动事件
adb shell input swipe 900 500 100 500
从右往左滑动屏幕
adb shell input swipe 500 500 501 501 2000
其实就是在小的距离内,在较长的持续时间内进行滑动,最后表现出来的结果就是长按动作