赞
踩
目录
PS:可以通过adb shell ls /system/bin/
命令获取当前设备所支持的相关命令
adb的全称为Android Debug Bridge:android调试桥梁。
adb是一个C/S架构的应用程序,由三部分组成:
A client(运行在pc端的adb client):命令行程序”adb”用于从shell或脚本中运行adb命令。首先,“adb”程序尝试定位主机上的ADB服务器,如果找不到ADB服务器,“adb”程序自动启动一个ADB服务器。接下来,当设备的adbd和pc端的adb server建立连接后,adb client就可以向ADB servcer发送服务请求;
A Server (运行在pc端的adb server):ADB Server是运行在主机上的一个后台进程。它的作用在于检测USB端口感知设备的连接和拔除,以及模拟器实例的启动或停止,ADB Server还需要将adb client的请求通过usb或者tcp的方式发送到对应的adbd上;
A demon (运行在设备端的常驻进程adb demon (adbd)):程序“adbd”作为一个后台进程在Android设备或模拟器系统中运行。它的作用是连接ADB服务器,并且为运行在主机上的客户端提供一些服务;
daemon程序意思守护进程。通常在系统后台长时间运行,由于没有控制终端而无法与前台交互,daemon程序一般作为系统服务使用。daemon是静态的,就是某一程序,daemon运行后会提供某种服务,服务是动态的,是程序运行产生的进程。通常说的Linux守护进程就是指daemon或者服务。daemon的名称通常为相应的服务后加上一个d。如cron服务的daemon为crond,http服务的daemon为httpd。
adb 的运行原理是 PC 端的 adb server 与手机端的守护进程 adbd 建立连接,然后 PC 端的 adb client 通过 adb server 转发命令,adbd 接收命令后解析运行。
adb [-d|-e|-s ]
参数说明:
-d 指定当前唯一通过 USB 连接的 Android 设备为命令目标
-e 指定当前唯一运行的模拟器为命令目标
-s <serialNumber> 指定相应 serialNumber 号的设备/模拟器为命令目标
在多个设备/模拟器连接的情况下较常用的是 -s 参数,serialNumber 可以通过 adb devices 命令获取。其中无线连接的设备格式:10.129.164.6:5555,usb格式示例cf264b8f
实现目标 | 详细命令 |
---|---|
查看电脑连接设备 | adb devices |
导出图片 | adb pull <设备里的文件路径> [电脑上的目录] adb pull /sdcard/xxx.png . |
导入文件到设备 | adb push <电脑上的文件路径> <设备里的目录> adb push ~/sr.mp4 /sdcard/ |
获取屏幕分辨率 | adb shell wm size |
adb启动 | 启动 adb server 命令:adb start-server 一般无需手动执行此命令,在运行 adb 命令时若发现 adb server 没有启动会自动调起。) 指定adb server的网络端口:adb -P <port> start-server(默认端口5037) |
adb停止 | 停止 adb server 命令:adb kill-server |
查看adb版本信息 | adb version |
以root权限执行adbd | 方法一: adb shell su 方法二: adb root 正常输出:restarting adbd as root 恢复非root权限:adb unroot |
安装应用apk | adb install [-lrtsdg] <path_to_apk> 内部原理adb install 实际是分三步完成: (1)push apk 文件到 /data/local/tmp。 (2)调用 pm install 安装。 (3)删除 /data/local/tmp 下的对应 apk 文件。 |
卸载应用apk | adb uninstall [-k] <packagename> <packagename> 表示应用的包名,-k 参数可选,表示卸载应用但保留数据和缓存目录。 |
查看进程 | adb shell ps |
开启关闭wifi(需要root权限) | 开启 WiFi: adb root adb shell svc wifi enable |
(1)单个坐标
adb shell input tap <x> <y>
(2)焦点在文本框,输入文本
adb shell input text <string>
(3)滑动解锁
adb shell input swipe <x1> <y1> <x2> <y2>
(4)按键
adb shell input keyevent <keycode>
方法一:借助ubs线
(1)将 Android 设备与要运行 adb 的电脑连接到同一个局域网
(2)将设备与电脑通过 USB 线连接
(3)让设备在 5555 端口监听 TCP/IP 连接:adb tcpip 5555
(4) 断开 USB 连接,「设置」-「关于手机」-「状态信息」-「IP地址」查看设备ip地址,连接:adb connect <device-ip-address>
(5)确认连接状态:adb devices,可以看到<device-ip-address>:5555 device
(6)断开无线连接:adb disconnect <device-ip-address>
方法二:不借助ubs线,需要 root 权限
(1)Android 设备上安装一个终端模拟器:Terminal Emulator for Android Downloads
(2)将 Android 设备与要运行 adb 的电脑连接到同一个局域网
(3)打开 Android 设备上的终端模拟器,在里面依次运行命令:
- su
- setprop service.adb.tcp.port 5555
(4)「设置」-「关于手机」-「状态信息」-「IP地址」找到ip地址,连接:adb connect <device-ip-address>
adb shell dumpsys,默认打印出当前系统所有service信息,在后面可加上具体的服务名需要列出当前运行的服务
(1)获取activity信息
- adb shell dumpsys activity
- 加上-h可以获取帮助信息
- 获取当前处于前台的activity信息:
- adb shell dumpsys activity activities
- 获取当前界面的UI信息,可以用:
- adb shell dumpsys activity top
- 要获取当前界面的Activity:
- adb shell dumpsys activity top | grep <activity>
(2)查看应用详细信息
adb shell dumpsys package <packagename>
(3)电池状况
adb shell dumpsys battery(可以获取到当前设备电量情况)
(4)获取设备分辨率
adb shell dumpsys display | grep DisplayDeviceInfo
(5)获取cpu信息
adb shell dumpsys cpuinfo
(6)获取内存信息
- adb shell dumpsys meminfo
- 要获取具体应用的内存信息,可加上包名
- adb shell dumpsys meminfo <packagename>
(7)获取package信息
- adb shell dumpsys package
- 加上-h可以获取帮助信息
- 获取某个包的信息:
- adb shell dumpsys package <pakagename>
(8)获取通知信息
adb shell dumpsys notification
(9)获取wifi信息
- adb shell dumpsys wifi
- 可以获取到当前连接的wifi名、搜索到的wifi列表、wifi强度等
(10)获取电源管理信息
adb shell dumpsys power
(11)获取电话信息
adb shell dumpsys telephony.registry
更多命令参考:https://www.cnblogs.com/JianXu/p/5376642.html
基本命令格式:
adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]
-s显示系统应用
-3显示第三方应用
grep 过滤指定字符串包名应用
显示所有应用:adb shell pm list packages
基础命令格式:
adb shell am <command>
command说明:
command | 用途 |
---|---|
start [options] <INTENT> | 启动 <INTENT> 指定的 Activity |
startservice [options] <INTENT> | 启动 <INTENT> 指定的 Service |
broadcast [options] <INTENT> | 发送 <INTENT> 指定的广播 |
force-stop <packagename> | 停止 <packagename> 相关的进程 |
intent示例:
参数 | 含义 |
---|---|
-a <ACTION> | 指定 action,比如 android.intent.action.VIEW |
-c <CATEGORY> | 指定 category,比如 android.intent.category.APP_CONTACTS |
-n <COMPONENT> | 指定完整 component 名,用于明确指定启动哪个 Activity,如 com.example.app/.ExampleActivity |
实际使用示例:
- 调起activity
- adb shell am start [options] <INTENT>
- 启动Activity
- adb shell am start -n com.baidu.searchbox/com.baidu.searchbox.MainActivity
- 启动Activity并打开url
- adb shell am start -n com.baidu.searchbox/com.baidu.searchbox.MainActivity -a android.intent.action.VIEW -d url
- 强制停止应用
- adb shell am force-stop <packagename>
- 清除应用数据与缓存
- adb shell pm clear <packagename>
top命令提供了实时的对系统处理器的状态监视。它将显示系统中CPU最“敏感”的任务列表。该命令可以按CPU使用、内存使用和执行时间对任务进行排序。
基础命令格式:
- adb shell top -h
- Usage: top [ -m max_procs ] [ -n iterations ] [ -d delay ] [ -s sort_column ] [-t ] [ -h ]
- -m num Maximum number of processes to display. 最多显示多少个进程
- -n num Updates to show before exiting. 刷新次数
- -d num Seconds to wait between updates. 刷新间隔时间(默认5秒)
- -s col Column to sort by (cpu,vss,rss,thr). 按哪列排序
- -t Show threads instead of processes. 显示线程信息而不是进程
- -h Display this help screen. 显示帮助文档
作用:可获取CPU、VSS、RSS数据
- CPU% 当前瞬时CPU占用率
- VSS Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
- RSS Resident Set Size 实际使用物理内存(包含共享库占用的内存)
经常用于Android端查看设备cpu和内存占用情况,监测单个应用,例如针对百度app的CPU占用率~
监测一次手百的CPU占用情况:
adb shell top -n 1 | grep com.baidu.searchbox
10秒刷新一次显示CPU占用情况:
adb shell top -d 10 | grep com.baidu.searchbox
实时监测微博的CPU占用情况:
adb shell top | grep com.baidu.searchbox
Android 系统的日志分为两部分,底层的 Linux 内核日志输出到 /proc/kmsg,Android 的日志输出到 /dev/log。
命令格式:
- adb logcat -h
- Usage: logcat [options] [filterspecs]
- options include:
- -s Set default filter to silent. Equivalent to filterspec '*:S'
- -f <file>, --file=<file> Log to file. Default is stdout
- -r <kbytes>, --rotate-kbytes=<kbytes>
- Rotate log every kbytes. Requires -f option
- -n <count>, --rotate-count=<count>
- Sets max number of rotated logs to <count>, default 4
- --id=<id> If the signature id for logging to file changes, then clear
- the fileset and continue
- -v <format>, --format=<format>
- Sets log print format verb and adverbs, where <format> is:
- brief help long process raw tag thread threadtime time
- and individually flagged modifying adverbs can be added:
- color descriptive epoch monotonic printable uid
- usec UTC year zone
- Multiple -v parameters or comma separated list of format and
- format modifiers are allowed.
- -D, --dividers Print dividers between each log buffer
- -c, --clear Clear (flush) the entire log and exit
- if Log to File specified, clear fileset instead
- -d Dump the log and then exit (don't block)
- -e <expr>, --regex=<expr>
- Only print lines where the log message matches <expr>
- where <expr> is a Perl-compatible regular expression
- -m <count>, --max-count=<count>
- Quit after printing <count> lines. This is meant to be
- paired with --regex, but will work on its own.
- --print Paired with --regex and --max-count to let content bypass
- regex filter but still stop at number of matches.
- -t <count> Print only the most recent <count> lines (implies -d)
- -t '<time>' Print most recent lines since specified time (implies -d)
- -T <count> Print only the most recent <count> lines (does not imply -d)
- -T '<time>' Print most recent lines since specified time (not imply -d)
- count is pure numerical, time is 'MM-DD hh:mm:ss.mmm...'
- 'YYYY-MM-DD hh:mm:ss.mmm...' or 'sssss.mmm...' format
- -g, --buffer-size Get the size of the ring buffer.
- -G <size>, --buffer-size=<size>
- Set size of log ring buffer, may suffix with K or M.
- -L, --last Dump logs from prior to last reboot
- -b <buffer>, --buffer=<buffer> Request alternate ring buffer, 'main',
- 'system', 'radio', 'events', 'crash', 'default' or 'all'.
- Additionally, 'kernel' for userdebug and eng builds, and
- 'security' for Device Owner installations.
- Multiple -b parameters or comma separated list of buffers are
- allowed. Buffers interleaved. Default -b main,system,crash.
- -B, --binary Output the log in binary.
- -S, --statistics Output statistics.
- -p, --prune Print prune white and ~black list. Service is specified as
- UID, UID/PID or /PID. Weighed for quicker pruning if prefix
- with ~, otherwise weighed for longevity if unadorned. All
- other pruning activity is oldest first. Special case ~!
- represents an automatic quicker pruning for the noisiest
- UID as determined by the current statistics.
- -P '<list> ...', --prune='<list> ...'
- Set prune white and ~black list, using same format as
- listed above. Must be quoted.
- --pid=<pid> Only prints logs from the given pid.
- --wrap Sleep for 2 hours or when buffer about to wrap whichever
- comes first. Improves efficiency of polling by providing
- an about-to-wrap wakeup.
- filterspecs are a series of
- <tag>[:priority]
- where <tag> is a log component tag (or * for all) and priority is:
- V Verbose (default for <tag>)
- D Debug (default for '*')
- I Info
- W Warn
- E Error
- F Fatal
- S Silent (suppress all output)
使用示例:adb logcat *:W
Android 的日志分为如下几个优先级(priority):
日志格式:
adb logcat -v <format>
Format示例如下:
清除日志:adb logcat -c
(1)屏幕截图
截图保存到电脑:
adb exec-out screencap -p > sc.png
截图保存到设备:
adb shell screencap -p /sdcard/sc.png
-p参数:指定保存文件为 png 格式
(2)录制屏幕
录制屏幕以mp4格式保存到/sdcard(默认录制时间和最长录制时间都是180秒):
adb shell screenrecord /sdcard/filename.mp4
(3)刷机相关命令
重启手机:adb reboot
重启到Recovery模式:adb shell recovery
重启到 Fastboot 模式:adb reboot bootloader
通过 sideload 更新系统:adb sideload <path-to-update.zip>
(4)使用Monkey进行压力测试
Monkey可以生成伪随机用户事件来模拟单击、触摸、手势等操作,可以对正在开发中的程序进行随机压力测试
基础命令格式:
adb shell monkey -c <main-category> <event-count>
详细参数说明:
基本参数 | 说明 |
---|---|
-p <allowed-package-name> | 指定一个或多个包 |
-s <seed> | 指定一个随机数生成器的seed值 |
--throttle <milliseconds> | 指定事件之间的固定延迟(ms) |
-v | 指定反馈信息级别(信息级别就是日志的详细程度) |
-c <main-category> | 指定一个或多个类别名 |
-f <scriptfile> | 运行指定的monkey脚本 |
事件参数 | 说明 |
---|---|
--pct-touch <percent> | 指定触摸事件百分比 |
--pct-motion <percent> | 指定动作事件百分比 |
--pct-trackball <percent> | 指定轨迹事件百分比 |
--pct-syskeys <percent> | 指定系统按键事件百分比 |
--pct-nav <percent> | 指定基本导航事件百分比 |
--pct-majornav <percent> | 指定主要导航事件百分比 |
--pct-appswitch <percent> | 指定应用启动事件百分比 |
--pct-flip <percent> | 指定flip(弹)事件的百分比 |
--pct-anyevent <percent> | 指定其他类型事件百分比 |
--pct-pinchzoom <percent> | 指定缩放(捏)事件百分比 |
--pct-permission <percent> | 指定权限许可事件百分比 |
禁止命令:adb shell settings put global policy_control immersive.full=*为防止执行向下滑动的命令时,容易打开通知栏,进行其他无关操作,我们需要在执行monkey命令之前,先执行禁用通知栏的命令
解禁命令:adb shell settings put global policy_control null
monkey使用示例
adb shell monkey -p com.xiaomi.sc -v -v -v --throttle 200 -s 1 --ignore-crashes --ignore-timeouts --ignore-native-crashes --pct-touch 30 100000 2>/Users/admin/Desktop/error.txt 1>/Users/admin/Desktop/info.txt
参数说明如下:
参数 | 说明 |
---|---|
-p com.xiaomi.sc | 测试app对象包名 |
-v -v -v | 打印日志level0:-v 缺省值,仅提供启动结束信息level1:-v -v 表示打印较详细日志,包括发送到activity的信息level2:-v -v -v 表示打印最详细日志,包括测试未选中的activity信息 |
--throttle 200 | 事件之间间隔200ms |
-s 1 | 伪随机数生成器,seed值为1,相同seed值再次执行monkey将产生相同的时间序列 |
--ignore-crashes | 忽略应用程序崩溃,继续发送执行事件直到事件数执行完成 |
--ignore-timeouts | 忽略应用程序发生的anr错误,直到事件数执行完成 |
--ignore-native-crashes | 忽略android native-code引起的崩溃,直到事件数执行完成 |
--pct-touch 30 | 指定触摸事件占比30% |
100000 | 执行100000次事件 |
2>/Users/admin/Desktop/error.txt | level2错误日志保存到桌面的error.txt文件 |
1>/Users/admin/Desktop/info.txt | level1信息日志保存到桌面的info.txt文件 |
monkey日志抓取
adb shell monkey [option] <count> > d:\monkey.txt
adb shell monkey [option] <count> > /mnt/sdcard/monkey.txt // 日志会保存在手机SD卡上的一个monkey.txt文件中
Monkey [option] <count> 1>/sdcard/monkey.txt 2>/sdcard/error.txt // Monkey 的运行日志和异常日志被开保存
monkey日志分析
ANR
adb shell
cd data/anr
traces.txt
traces.txt
文件: adb pull /data/anr/traces.txt
CRASH
Exception
OOM
Monkey finished
内核日志:adb shell dmesg
查看设备信息:adb shell getprop
查看设备信息型号:adb shell getprop ro.product.model
android系统版本:adb shell getprop ro.build.version.release
CPU信息:adb shell cat /proc/cpuinfo
内存信息:adb shell cat /proc/meminfo
更多详细内容参考:
https://blog.csdn.net/LetsStudy/article/details/89077524
https://www.cnblogs.com/hejing-swust/p/7762240.html
https://www.cnblogs.com/nullnullnull/p/11114409.html
本文整合自网络,仅供学习使用!
参考:https://blog.csdn.net/zhonglunshun/article/details/78362439
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。