一、ADB是什么?
ADB,即 Android Debug Bridge 是一种允许模拟器或已连接的 Android 设备进行通信的命令行工具,它可为各种设备操作提供便利,如安装和调试应用,并提供对 Unix shell(可用来在模拟器或连接的设备上运行各种命令)的访问。可以在Android SDK/platform-tools中找到 adb 工具或下载 ADB Kits 。
注: 有部分命令的支持情况可能与 Android 系统版本及定制 ROM 的实现有关。
二、ADB有什么作用?
ADB 是 Android SDK 里的一个工具, 用这个工具可以直接操作管理Android模拟器或者真实的Android设备。它的主要功能有:
- 在设备上运行Shell命令;
- 将本地APK软件安装至模拟器或Android设备;
- 管理设备或手机模拟器上的预定端口;
- 在设备或手机模拟器上复制或粘贴文件。
ADB 是一个客户端-服务器程序程序,包括三个组件:
- 客户端:该组件发送命令。客户端在开发计算机上运行。您可以通过发出 adb 命令从命令行终端调用客户端。
- 后台程序:该组件在设备上运行命令。后台程序在每个模拟器或设备实例上作为后台进程运行。
- 服务器:该组件管理客户端和后台程序之间的通信。服务器在开发计算机上作为后台进程运行。
三、ADB常用命令
名称 | 命令 | 备注 |
---|---|---|
*查看adb的版本信息 | adb version | |
查询已连接的设备/模拟器列表 | adb devices | 设备连接管理 |
*安装apk | adb install +包名 | 覆盖安装是使用 -r 选项 |
*保留安装apk | adb install -r +包名 | 保留数据和缓存文件,重新安装,升级 |
*卸载apk | adb uninstall +包名 | |
*卸载保留apk | adb uninstall -k +包名 | 卸载app但保留数据和缓存文件 |
*网络连接Android设备 | adb connect +设备IP | |
*重启Android设备 | adb reboot | |
* 获取设备的状态 | adb get-state | device:正常 , offline:异常无响应 , unknown:无 |
* 进入指定的设备 | adb -s <device_name> shell | device_name:设备名 |
启动adb | adb start-server | 一般自动调用开启 |
停止adb | adb kill-server | |
以 root 权限运行 adb | adb root | 部分手机执行su root |
指定 adb server 的网络端口 | adb -P start-server | ADB的默认端口为 5037 |
查看手机的序列号 | adb get-serialno | |
查看手机屏幕分辨率 | adb shell wm size |
四、adb shell命令
名称 | 命令 | 备注 |
---|---|---|
*** | adb shell pm | 获取安装在 Android 设备上得应用信息 |
*列出所有的应用的包名 | adb shell pm list package | -s:列出系统应用 -3:列出第三方应用 -f:列出应用包名及对应的apk名及存放位置 -i:列出应用包名及其安装来源 |
*列出对应包名.apk 位置 | adb shell pm path+包名 | 安装包位置 |
*安装apk应用 | adb install +apk存放路径 | 目标 apk 存放于PC端 |
*安装apk应用 | adb shell pm install +apk存放路径 | 目标 apk 存放于Android设备上 |
清除应用数据 | adb shell pm clear +包名 | |
*** | adb shell am | |
* 启动应用 | adb shell am start -n <package_name>/<package_name>.<activity_name> | <package_name>代表应用的包名,<package_name>.<activity_name>代表这个包的启动入口 |
* 结束应用 | adb shell am force-stop +包名 | |
启动一个服务 | adb shell am startservice | |
发送一个广播 | adb shell am broadcast | |
*** | adb shell input | 向 Android 设备发送按键事件 |
发送文本内容 | adb shell input text +内容 | 不能发送中文 |
*发送按键事件 | adb shell input keyevent + 按键事件 | |
*发送一个触摸事件 | adb shell input tap +触摸事件的位置 | 点击屏幕坐标 100*100 的位置(adb shell input tap 100 100) |
* 发送一个触摸事件 | adb shell input tap | |
*发送一个滑动事件 | adb shell input swipe | 右往左滑动,如:adb shell input swipe 600 100 200 100 |
打印输出 | adb shell bugreport | 打印dumpsys、dumpstate、logcat的输出,用于分析错误 |
### | 其他命令 | |
录制 | adb shell screenrecord /sdcard/demo.mp4 | ctrl + c 结束录制,录制结果保存至 sdcard/ 下 |
列出设备上的输入法 | adb shell ime list -s | |
*当前应用的包名和启动入口 | adb shell dumpsys activity | grep mFocusedActivity | Android使用findstr,iOS用grep |
获取系统版本 | adb shell getprop ro.build.version.release | |
获取系统api版本 | adb shell getprop ro.build.version.sdk | |
查看手机的cpu信息 | adb shell cat /proc/cpuinfo | |
查看手机的设备型号 | adb shell getprop ro.product.model | |
手机的mac地址 | adb shell cat /sys/class/net/wlan0/address | |
手机厂商名称 | adb -d shell getprop ro.product.brand | |
手机内存信息 | adb shell cat /proc/meminfo | |
手机存储信息 | adb shell df | |
手机内部存储信息 | adb shell df /data | |
多个设备对其中一个进行操作 | adb -s 192.168.101.37:5555 shell |