ADB全称为Android Debug Bridge,起到调试桥的作用,是一个客户端-服务器端程序。其中客户端是用来操作的电脑,服务端是Android设备。
ADB也是Android SDK中的一个工具,可以直接操作管理Android模拟器或者真实的Android设备。
ADB可以直接操作管理手机模拟器或者真实的手机设备(如华为手机)。它的主要功能有:
- 运行设备的shell(命令行)
- 管理模拟器或设备的端口映射
- 计算机和设备之间上传/下载文件
- 可以对设备的应用进行卸载安装等
- 在App遇到ANR/Crash等bug时,可以通过ADB来抓取
连接设备(多台设备):
adb
-d 指定当前唯一通过 USB 连接的 Android 设备为命令目标
-e 指定当前唯一运行的模拟器为命令目标
-s <serial-number> 指定相应设备序列号的设备/模拟器为命令目标
在多个设备/模拟器连接的情况下较常用的是 -s <serial-number> 参数,serial-number是指设备的设备序列号,可以通过 adb devices 命令获取。
基本:
adb version 显示adb版本号
adb help 帮助信息 查看adb所支持的所有命令
adb start-server 启动adb服务
adb kill-server 关闭adb服务
adb devices 用来查看当前连接设备 已连接的设备会显示出来
adb connect 用来连接设备(夜神 adb connect 127.0.0.1:62001)
adb install 将本地apk安装到设备上
-r 覆盖安装
adb uninstall 将设备上的apk卸载
-k 保存数据缓存消息
权限:
adb root 获取Android管理员(root用户)的权限
adb shell 登录设备的shell
adb remount 获取System分区可写权限 需要有root权限才有这个权限
应用管理(pm):
adb shell pm list packages 显示所有包名
adb shell pm list packages -s 显示系统应用包名
adb shell pm list packages -3 显示第三方应用包名
adb shell pm list packages 字符串 包名包含字符串的应用
adb shell pm clear <package-name> 清除应用缓存数据
adb shell pm path <package-name> 查看应用的路径
文件操作
adb pull <remote> <local> 把设备(模拟器/真机)的文件或者文件夹复制到本地(电脑)
adb push <local> <remote> 把本地的文件夹或者文件复制到设备(模拟器/真机)
日志:
adb logcat -s showdco 显示指定标签的日志
adb logcat -v time > D:\logs\logcat.log 设置日志的输出格式(threadtime long time 等格式)输出到指定文件
adb logcat -d 缓存的日志输出到屏幕上
adb logcat -t 5 输出最近的几行
adb logcat *.E 过滤指定等级的错误信息
adb logcat | grep --color=auto -i android 指定日志颜色
adb logcat | grep -E “android|system” | tee /home/cherish/log.txt 将日志保存到文件 , 但无法输出到屏幕 , 针对这个问题可以采用 tee命令 .
adb logcat -c 清空已存在的日志
系统操作:
getprop:从系统的各种配置文件中读取信息
dumpsys:Android 系统启动时会有大批的服务随之启动,那么我们就可以用 dumpsys 命令来查看每个服务的运行情况
adb shell getprop ro.product.model 获取设备型号
adb shell getprop ro.build.version.release 获取系统版本
adb shell wm size 获取屏幕分辨率
adb screen -p > /sdcard/111.jpg 屏幕截图
adb shell dumpsys battery 查看电池信息
adb shell dumpsys window|findstr mCurrentFocus 获取当前页面页面名(mac 换成grep并且加引号 )
注:
获取启动页面的activity:
adb logcat ActivityManager:I | findstr "cmp"
启动应用(am):
调起Activity:
adb shell am start -n <包名><活动页名> 用于明确指定启动哪个 Activity
adb shell am start -a <action> 指定 action,比如 android.intent.action.VIEW
adb shell am start -c 指定类别,如 android.intent.category.APP_CONTACTS
调起Service:
如果设备上原本应该显示虚拟按键但是没有显示,可以试试这个:
adb shell am startservice -n com.android.systemui/.SystemUIService
adb shell am stopservice [options] <intent> 停止Service
调起广播:
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED 向所有组件广播 BOOT_COMPLETED
adb shell am force-stop <packagename> 强制停止应用
模拟按键/输入:
adb shell input keyevent <keycode> 输入不同的keycode 不同的操作
adb shell input text <string> 输入文本
adb shell swipe 300 1000 300 500 滑动解锁