一.adb是什么?
adb 称之为:Android 调试桥 (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连接真机或者模拟器一共有以下3种方法
- 连接模拟器
- 有线连接真机
- 无线连接真机
1.连接夜神模拟器
-
启动夜神模拟器
-
连接模拟器
- 使用win+r按键输入cmd,回车打开cmd窗口
adb connect 127.0.0.1:62001
-
查看连接的设备
- adb devices
List of devices 设备名称
attached 连接状态(devices设备正常连接、offline连接出现异常,设备无响应、unknown没有连接设备)
- adb devices
-
启用设备的开发者选项,启动调试功能
- 夜神模拟器:设置->点击版本号7次直到出现提示【开发者选项】->返回上一步能看到【开发者选项】->USB调试
2.有线连接真机(需原装数据线)
-
将手机与电脑通过 USB 线连接
-
确保 Android 手机的
开发者选项
和USB 调试模
式已开启 -
「设置」-「开发者选项」-「Android 调试」查看。开发者选项,
点允许 usb 调试
,然后就可以连上电脑了- 如果在设置里找不到开发者选项,在
「设置」-「关于手机」连续点击「版本号」7
次。
- 如果在设置里找不到开发者选项,在
-
-
cmd框输入
adb devices
命令查看设备连接情况- List of devices 设备名称
- attached 连接状态(devices设备正常连接、offline连接出现异常,设备无响应、unknown没有连接设备)
3. 无线连接真机(需原装数据线)
-
将 Android 设备与要运行 adb 的电脑连接到
同一个局域网
- 比如连到
同一个 WiFi
。将手机与电脑通过USB
线连接。
- 比如连到
-
确保连接成功,在cmd窗口输入
adb devices
看是否能列出该设备
-
让设备在
5555 端口
监听TCP/IP
连接- 开发者选项,点允许usb调试
- 输入
adb tcpip 5555
- 找到设备的 IP 地址
- 进入手机的WIFI连接,进入连接属性,查看手机的 IP
- 也可在**「设置」-「关于手机」-「状态信息」-「IP地址」**找到
-
通过 IP 地址连接设备,在cmd窗口输入
adb connect '手机ip地址'
- 出现 connected to 192.168.31.109:5555 表示连接成功
- 出现 connected to 192.168.31.109:5555 表示连接成功
注:连接不成功,检查以下问题
- 确保
网络和端口
都没有问题,使用的是原装数据线
- 请确认 Android 设备与电脑是连接到了同一个 WiFi,然后再次执行
adb connect
那一步- 通过
adb kill-server
重新启动 adb 然后从头再来一次试试
四.常用命令
常用命令
adb version 查看版本
adb devices -l 查看已链接的设备
adb shell getprop ro.build.version.release 查看Android内核版本号
#查看正在运行的服务:语法 adb shell dumpsys activity services [<package-name>]
adb shell dumpsys activity | findstr “mResume” 1.查看手机屏幕当前应用页面Activity名称以及程序包名,入口类名 (window)
adb shell dumpsys window | grep mCurrent 2.查看手机屏幕当前应用页面Activity名称以及程序包名,入口类名(mac)adb start-server 启动adb 一般无需手动执行此命令,在运行 adb 命令时若发现 adb server 没有启动会自动调起。
adb kill-server 停止adb
adb -P <port> start-server 指定 adb server 的网络端口 ADB的默认端口为 5037。
注意
- 查看前台(即手机当前界面)应用包名:
adb shell dumpsys activity | find “mFocusedActivity”
注意:如果是真机的话,Android版本一般是在8.0
以上,命令需要改下adb shell dumpsys activity | find “mResumedActivity”
1.常用简单的adb命令:
1、adb devices: 获取设备列表和设备的状态
2、adb get-state: 获取设备的状态(设备的状态有三种:device,设备连接正常;offline,连接出现异常,设备无响应;unknown,设备未连接;)
3、adb kill-server,adb start-server: 结束,启动adb服务
4、adb install -r: 覆盖安装应用(apk)
5、adb uninstall: 卸载应用(应用包名)
6、adb pull : 将设备上的文件复制到电脑上
7、adb push : 将电脑上的文件复制到设备上
8、adb reboot : 重启设备
9、adb connect : 远程连接设备
10、adb disconnect : 断开设备连接
2.adb shell pm基本的命令:
-
列出安装在设备上的应用
adb shell pm list package -s 列出系统应用 adb shell pm list package -3 列出第三方的应用 adb shell pm list package -i 列出来源 db shell pm list package -f 列出包名和路径
-
列出应用apk的位置
adb shell pm path packagename 列出应用apk的位置#### 列出应用的详细信息
-
列出应用的详细信息
adb shell pm dump packagename
-
清除应用的缓存数据
adb shell pm clear packagename
-
安装卸载手机应用:
首先将test.apk文件push到手机目录中比如/data/local/tmp
adb shell pm install /data/local/tmp/test.apk 安装 adb shell pm install –r /data/local/tmp/test.apk 重新安装 adb shell pm uninstall -k packagename 卸载,加k保留缓存数据 adb shell pm install -d apk 允许降级安装
3.adb shell am基本的命令:
1、启动一个 Activity:adb shell am start -n activityname
2、等待页面启动完成:adb shell am start -W activityname
3、先停止应用再启动:adb shell am start -S activityname
4、结束应用: am force-stop packagename
4.adb shell dumpsys基本的命令:
-
监控应用数据:
adb shell dumpsys cpuinfo cpu信息adb shell dumpsys meminfo 内存信息 adb shell dumpsys power 电源信息 adb shell dumpsys battery 电池信息adb shell dumpsys wifi wifi信息 adb shell dumpsys notification 通知信息 adb shell dumpsys activity 获取页面信息
5.关闭某项进程,以monkey为例:
-
杀死monkey进程:
ps | grep monkey 查看monkey进程的pid kill pid 杀死monkey进程
6.最近12小时的资源情况:
dumpsys procstats --hours 12 最近12小时的资源情况
7.录制屏幕命令:
adb shell screenrecord /sdcard/demo.mp4 视频录制命令
可选参数:
-
限制录制时间:
参数: --time-limit -
指定视频分辨率大小:
参数: --size -
指定视频的比特率:
参数: --bit-rate -
在命令行显示log:
参数: --verbose
8.截图命令:
adb shell screencap -p /sdcard/screen.png 截图并保存到指定位置
9.input命令:
adb shell input:
text 输入文本
keyevent 输入事件
tap 点击
swipe 滑动<坐标><坐标为原地,则是长按>
10.关于获取当前页面的信息:
adb shell dumpsys activity top | findstr ACTIVITY 获取当前界面的Activity
adb shell dumpsys activity | findstr mFocusedActivity 获取当前页面的activity
11.生成当前页面的xml文本:
adb shell uiautomator dump [file] 获取当前页面的xml信息
text 控件中显示的文本内容
class 控件的类型
package 包名
content-desc 说明
checkable 是否允许check
checked check状态
clickable 是否允许click
enabled 控件状态
focusable 是否允许获取焦点
focused 是否获取到焦点
scrollable 是否允许滚动
long-clickable 是否允许长安
password 是否是密码控件
selected select状态
bounds 控件绘制的长宽及位置 四个数据,分成两组,分别是 左上坐标和右下坐标
12.打印页面的log信息:
logcat -s ActivityManager 打印页面的log信息
13.系统操作指令
adb shell getprop ro.product.model 获取设备型号adb shell getprop ro.build.version.release 获取设备 Android 系统版本adb get-serialno 获取设备的序列号(设备号)adb shell wm size 获取设备屏幕分辨率adb shell dumpsys activity |find "mFocusedActivity" 查看前台应用包名,适用于 Android 7.0 以下,必须先启动 app
adb shell dumpsys activity |find "mResumedActivity" 查看前台应用包名,适用于 Android 8.0 以上,必须先启动 app