学习网址
ADB命令的基本语法如下:
adb [-d|-e|-s <serialNumber>] <command>
如果有多个设备/模拟器连接,则需要为命令指定目标设备。
参数及含义如下:
常用命令如下:
1. 启动ADB服务
adb start-server
2. 停止ADB服务
adb kill-server
3. 指定ADB服务的网络端口
adb -P <port> start-server
默认端口为5037
4. 查询已连接设备/模拟器
adb devices
输出示例:
List of devices attached
cf264b8f device
emulator-5554 device
10.129.164.6:5555 device
输出格式为 [serialNumber] [state],serialNumber即我们常说的SN,state有如下几种:
offline 表示设备未连接成功或无响应;
device 设备已连接。注意这个状态并不能标识Android 系统已经完全启动和可操作,在设备启动过程中设备实例就可连接到ADB,但启动完毕后系统才处于可操作状态;
no device 没有设备/模拟器连接;
常见异常输出:
1. 没有设备/模拟器连接成功;
List of devices attached
2. 设备/模拟器未连接到ADB或无响应;
List of devices attached
cf264b8f offline
5. 无线连接(需要借助USB 线)
除了可以通过USB 连接设备与电脑来使用ADB,也可以通过无线连接,虽然连接过程中也有需要使用USB 的步骤,但是连接成功之后你的设备就可以在一定范围内摆脱USB 连接线的限制了。
操作步骤:
1. 将Android 设备与要运行ADB的电脑连接到同一个局域网,比如连到同一个WiFi;
2. 将设备与电脑通过USB 线连接;
应确保连接成功,可运行adb devices看是否能列出该设备。
3. 让设备在5555 端口监听TCP/IP 连接;
adb tcpip 5555
4. 断开USB 连接;
5. 找到设备的IP 地址;
一般能在 wifi信息找到。
6. 通过IP 地址连接设备;
adb connect <device-ip-address>
这里的<device-ip-address>就是上一步中找到的设备IP地址。
7. 确认连接状态;
adb devices
如果能看到 <device-ip-address>:5555 device 说明连接成功。
如果连接不了,请确认Android设备与电脑是连接到了同一个WiFi,然后再次执行adb connect <device-ip-address>那一步。
如果还是不行的话,通过adb kill-server重新启动adb然后从头再来一次试试。
8. 断开无线连接;
adb disconnect <device-ip-address>
6. 无线连接(无需借助USB 线)
注:需要root 权限
上面是官方文档里介绍的方法,需要借助于USB 数据线来实现无线连接。
既然我们想要实现无线连接,那能不能所有步骤下来都是无线的呢?答案是能的。
1. 在Android 设备上安装一个终端模拟器;
已经安装过的设备可以跳过此步。我使用的终端模拟器下载地址是:[Terminal Emulator for Android Downloads]
2. 将Android 设备与要运行ADB的电脑连接到同一个局域网,比如连到同一个WiFi;
3. 打开Android 设备上的终端模拟器,在里面依次运行命令;
su
setprop service.adb.tcp.port 5555
4. 找到Android 设备的IP 地址;
一般能在「设置」-「关于手机」-「状态信息」-「IP地址」找到,也可以使用下文里[查看设备信息- IP地址]一节里的方法用adb命令来查看。
5. 在电脑上通过adb 和IP 地址连接Android 设备;
adb connect <device-ip-address>
这里的<device-ip-address>就是上一步中找到的设备IP地址。
如果能看到connected to <device-ip-address>:5555这样的输出则表示连接成功。
有的设备,比如小米5S + MIUI 8.0 + Android 6.0.1 MXB48T,可能在第5 步之前需要重启adbd 服务,在设备的终端模拟器上运行:
restart adbd
如果restart 无效,尝试以下命令:
stop adbd
start adbd
7. 应用管理
7.1. 查看应用列表
adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]
7.2. 安装APK
adb install [-l -r -t -s -d -g] <path_to_apk>
Success代表安装成功,Failure表示安装失败。
实际是分三步完成:
1. push apk 文件到/data/local/tmp;
2. 调用pm install 安装;
3. 删除 /data/local/tmp 下的对应apk 文件;
所以,必要的时候也可以根据这个步骤,手动分步执行安装过程。
7.3. 卸载应用
adb uninstall [-k] <packagename>
命令示例:
adb uninstall com.centent.mm
表示卸载微信
7.4. 清除应用数据与缓存
adb shell pm clear <packagename>
<packagename> 表示应用名包,这条命令的效果相当于在设置里的应用信息界面点击了「清除缓存」和「清除数据」。
命令示例:
adb shell pm clear com.qihoo360.mobilesafe
表示清除360 手机卫士的数据和缓存。
7.5. 查看前台Activity
adb shell "dumpsys activity | grep mResumedActivity"
安卓版本不同使用的命令有所差异。
输出示例:
mResumedActivity: ActivityRecord{331d51f u0 com.tencent.mm/.ui.LauncherUI t1769}
其中的 com.tencent.mm/.ui.LauncherUI 就是当前处于前台的Activity。
7.6. 查看正在运行的Services
adb shell dumpsys activity services [<packagename>]
<packagename> 参数不是必须的,指定 <packagename> 表示查看与某个包名相关的Services,不指定表示查看所有Services。
<packagename>不一定要给出完整的包名,比如运行adb shell dumpsys activity services org.mazhuang,那么包名org.mazhuang.demo1、org.mazhuang.demo2等相关的Services都会列出来。
7.7. 查看应用详细信息
adb shell dumpsys package <packagename>
<packagename> 表示应用包名。
输出中包含很多信息,包括Activity Resolver Table、Registered ContentProviders、包名、userId、安装后的文件资源代码等路径、版本信息、权限信息和授予状态、签名版本信息等。
7.8. 查看应用安装路径
adb shell pm path <packagename>
输出应用安装路径
输出示例:
package:/data/app/ecarx.weather-1.apk
8. 与应用交互
adb shell am <command>
8.1. 启动应用/调起Activity
adb shell am start -n Activity
8.2. 调起Service
adb shell am startservice -n Service
8.3. 停止Service
adb shell am stopservice [options] <INTENT>
8.4. 强制停止应用
adb shell am force-stop 包名
9. 文件管理
9.1. 复制设备里的文件到电脑
adb pull <设备里的文件路径> [电脑上的目录]
9.2. 复制电脑里的文件到设备
adb push <电脑上的文件路径> <设备里的文件名>
注意:后边的是设备上的文件名