ADB命令详解
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了ADB命令详解,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含15163字,纯文字阅读大概需要22分钟。
内容图文
感谢团队同事的辛勤劳动和付出。
------此处献上我的膝盖
----------------------------------------------华丽分割线-------------------------------------------
原理: ADB是一个C/S架构的应用程序,由三部分组成:
- adb client --运行在pc端 运行adb命令:尝试定位ADB服务器,找不到则启动一个服务器;
- adb server--运行在pc端的后台进程
- adb demon (adbd) --运行在设备端、常驻进程
- Android设备正常开机,通过USB线与电脑连接
- 开启开发者选项和USB调试模式
- 设备驱动状态正常
命令 | 含义 |
adb verion | 查看adb版本 |
adb start-server | 启动adb server(一般无需手动启动) |
adb kill-server | 停止adb server |
adb root | 以 root 权限运行 adbd |
adb unroot | 以 普通权限运行 adbd |
adb remount | 已读写方式挂载系分区/system |
adb devices | 查询已经链接的设备 |
adb get-serialno | 打印设备序列号(和adb devices中的序列号一致) |
adb wait-for-device | 阻塞直到设备在线 |
adb get-state | 查看设备状态: device:设备正常连接 offline:连接出现异常,设备无响应 unknown:没有连接设备 |
adb status-window | 连续输出设备状态 |
adb bugreport | 返回设备bug report相关的所有信息 |
adb [-d|-e|-s ] | adb -e shell //进入到模拟器中 adb –d shell //进入到真机中 adb –s <设备id> shell //进入到指定设备中 |
adb shell svc wifi enable/disable | 开/关wifi |
adb reboot | 重启设备 |
adb reboot-bootloader | 设备重启到bootloader模式 |
adb reboot [bootloader|recovery] | 设备重启到bootloader或recovery模式 |
adb tcpip <port> | 重启adbd在指定的tcp端口上进行监听 |
adb usb | 重启adbd在usb上进行监听 |
- 截图
- 录制屏幕
- 获取当前界面的控件信息
- 应用管理
1.应用查看/安装/卸载
查看应用列表 | adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER] | |
参数 | 显示列表 | |
无 | 所有应用 | |
-f | 显示应用关联的 apk 文件 | |
-d | 只显示 disabled 的应用 | |
-e | 只显示 enabled 的应用 | |
-s | 只显示系统应用 | |
-3 | 只显示第三方应用 | |
-i | 显示应用的 installer | |
-u | 包含已卸载应用 | |
<FILTER> | 包名包含 <FILTER> 字符串 | |
查看应用详细信息 | adb shell dumpsys package <packagename> | |
安装apk | adb install [-lrtsdg] <path_to_apk> | |
-l | 将应用安装到保护目录 /mnt/asec | |
-r | 允许覆盖安装 | |
-t | 允许安装 AndroidManifest.xml 里 application 指定 android:testOnly="true" 的应用 | |
-s | 将应用安装到 sdcard | |
-d | 允许降级覆盖安装 | |
-g | 授予所有运行时权限 | |
卸载应用 | adb uninstall [-k] <packagename> -k 卸载应用但保留数据和缓存目录 | |
查看安装路径 | adb shell pm path <packagename> | |
清除应用数据及缓存 | adb shell pm clear <packagename> | |
查看前台activity | adb shell dumpsys activity activities | findstr mFocusedActivity 或adb shell dumpsys activity | grep -i run 或adb shell dumpsys activity activities | sed -En -e ‘/Running activities/,/Run #0/p‘ | |
查看正在运行的Services | adb shell dumpsys activity services [<packagename>] |
2.与应用的交互
adb shell am <command>命令 | 用途 |
am start [options] <INTENT> | 启动 <INTENT> 指定的 Activity |
am startservice [options] <INTENT> | 启动 <INTENT> 指定的 Service |
am broadcast [options] <INTENT> | 发送 <INTENT> 指定的广播 |
am force-stop <packagename> | 停止 <packagename> 相关的进程 |
参数 | 含义 |
-a <ACTION> | 指定 action,比如 android.intent.action.VIEW |
-c <CATEGORY> | 指定 category,比如 android.intent.category.APP_CONTACTS |
-n <COMPONENT> | 指定完整 component 名,用于明确指定启动哪个 Activity,如 com.example.app/.ExampleActivity |
部分系统预定义广播及正常触发时机 | |
action | 触发时机 |
android.net.conn.CONNECTIVITY_CHANGE | 网络连接发生变化 |
android.intent.action.SCREEN_ON | 屏幕点亮 |
android.intent.action.SCREEN_OFF | 屏幕熄灭 |
android.intent.action.BATTERY_LOW | 电量低,会弹出电量低提示框 |
android.intent.action.BATTERY_OKAY | 电量恢复了 |
android.intent.action.BOOT_COMPLETED | 设备启动完毕 |
android.intent.action.DEVICE_STORAGE_LOW | 存储空间过低 |
android.intent.action.DEVICE_STORAGE_OK | 存储空间恢复 |
android.intent.action.PACKAGE_ADDED | 安装了新的应用 |
android.net.wifi.STATE_CHANGE | WiFi连接到一个ssid后的广播 |
android.net.wifi.WIFI_STATE_CHANGED | WiFi 状态变为启用/关闭/正在启动/正在关闭/未知 |
android.intent.action.BATTERY_CHANGED | 电池电量发生变化 |
android.intent.action.INPUT_METHOD_CHANGED | 系统输入法发生变化 |
android.intent.action.ACTION_POWER_CONNECTED | 外部电源连接 |
android.intent.action.ACTION_POWER_DISCONNECTED | 外部电源断开连接 |
android.intent.action.DREAMING_STARTED | 系统开始休眠 |
android.intent.action.DREAMING_STOPPED | 系统停止休眠 |
android.intent.action.WALLPAPER_CHANGED | 壁纸发生变化 |
android.intent.action.HEADSET_PLUG | 插入耳机 |
android.intent.action.MEDIA_UNMOUNTED | 卸载外部介质 |
android.intent.action.MEDIA_MOUNTED | 挂载外部介质 |
android.os.action.POWER_SAVE_MODE_CHANGED | 省电模式开启 |
3.如何启动被测程序?
启动的方法:adb shell am start -n包名/启动页的Activity- 确定包名:adb shell pm list package -f
- 查看app启动页Activity:
- 文件管理
- 模拟按键/输入
keycode | 含义 | keycode | 含义 |
3 | HOME 键 | 126 | 恢复播放 |
4 | 返回键 | 127 | 暂停播放 |
5 | 打开拨号应用 | 164 | 静音 |
6 | 挂断电话 | 176 | 打开系统设置 |
24 | 增加音量 | 187 | 切换应用 |
25 | 降低音量 | 207 | 打开联系人 |
26 | 电源键 | 208 | 打开日历 |
27 | 拍照(需要在相机应用里) | 209 | 打开音乐 |
64 | 打开浏览器 | 210 | 打开计算器 |
82 | 菜单键 | 220 | 降低屏幕亮度 |
85 | 播放/暂停 | 221 | 提高屏幕亮度 |
86 | 停止播放 | 223 | 系统休眠 |
87 | 播放下一首 | 224 | 点亮屏幕 |
88 | 播放上一首 | 231 | 打开语音助手 |
122 | 移动光标到行首或列表顶部 | 276 | 如果没有 wakelock 则让系统休眠 |
123 | 移动光标到行末或列表底部 |
- 日志
1.日志过滤
Android 的日志分为如下几个优先级(priority): V —— Verbose(最低,输出得最多) D —— Debug I —— Info W —— Warning E —— Error F —— Fatal S —— Silent(最高,啥也不输出) 按某级别过滤日志则会将该级别及以上的日志输出。 比如: adb logcat ActivityManager:I MyApp:D *:S //输出 tag ActivityManager 的 Info 以上级别日志,输出 tag MyApp 的 Debug 以上级别日志,及其它 tag 的 Silent 级别日志(即屏蔽其它 tag 日志)。2.日志格式:
可以用 adb logcat -v <format> 选项指定日志输出格式。<format>格式名称 | 输出格式 | 输出举例 |
brief(默认格式) | <priority>/<tag>(<pid>): <message> | D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0 |
process | <priority>(<pid>) <message> | D( 1785) Disconnected process message: 10, size: 0 (HeadsetStateMachine) |
tag | <priority>/<tag>: <message> | D/HeadsetStateMachine: Disconnected process message: 10, size: 0 |
raw | <message> | Disconnected process message: 10, size: 0 |
time | <datetime> <priority>/<tag>(<pid>): <message> | 08-28 22:39:39.974 D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0 |
threadtime | <datetime> <pid> <tid> <priority> <tag>: <message> | 08-28 22:39:39.974 1785 1832 D HeadsetStateMachine: Disconnected process message: 10, size: 0 |
long | [ <datetime> <pid>:<tid> <priority>/<tag> ] <message> | [ 08-28 22:39:39.974 1785: 1832 D/HeadsetStateMachine ] Disconnected process message: 10, size: 0 |
3. 清空日志:adb logcat -c
4. 内核日志命令:adb shell dmesg
- 查看/修改设备信息
1.查看设备信息
查看设备型号信息 | adb shell getprop ro.product.model |
查看电池状况 | adb shell dumpsys battery |
屏幕分辨率 | adb shell wm size |
设备屏幕密度 | adb shell wm density |
显示屏参数命令 | adb shell dumpsys window displays |
android_id | adb shell settings get secure android_id |
IMEI | Android 4.4 及以下版本:adb shell dumpsys iphonesubinfo 在 Android 5.0 及以上版本(要root权限): #adb shell su service call iphonesubinfo 1 |
Android 系统版本 | adb shell getprop ro.build.version.release |
IP地址 | adb shell ifconfig | grep Mask 或 adb shell netcfg (部分系统版本可以) 或 设备连着 WiFi时可尝试:adb shell ifconfig wlan0 |
Mac 地址 | adb shell cat /sys/class/net/wlan0/address(局域网 Mac 地址) 移动网络或其它连接的信息可用adb shell netcfg 命令来查看 |
CPU 信息 | adb shell cat /proc/cpuinfo |
内存信息 | adb shell cat /proc/meminfo |
更多硬件与系统属性 | adb shell cat /system/build.prop |
2.修改设备信息
注: 修改设置之后,运行恢复命令有可能显示仍然不太正常,可以运行 #adb reboot 重启设备,或手动重启。 修改设置的原理主要是通过settings 命令修改/data/data/com.android.providers.settings/databases/settings.db(Android6.0后为/data/system/users/userid/下面的xml文件) 里存放的设置值。修改/恢复分辨率 | adb shell wm size 480x1024 adb shell wm size reset |
修改/恢复屏幕密度 | adb shell wm density 160 adb shell wm density reset |
修改/恢复显示区域命令: | adb shell wm overscan 0,0,0,200(四个数字分别表示距离左、上、右、下边缘的留白像素,以上命令表示将屏幕底部 200px 留白。) adb shell wm overscan reset |
关闭 USB 调试模式 | adb shell settings put global adb_enabled 0 |
状态栏和导航栏的显示隐藏 | adb shell settings put global policy_control <key1>=<value1>:<key2>=<value2>… |
状态栏和导航栏的显示隐藏: adb shell settings put global policy_control <key1>=<value1>:<key2>=<value2>… | |
Key | Value |
immersive.full同时隐藏 | apps所有应用 |
immersive.status 隐藏状态栏 | * 所有界面 |
immersive.navigaion 隐藏导航栏 | packagename指定应用 |
immersive.precomfirms ? | -packagename排除指定应用 |
- 备份与还原
备份选项 | 含义 |
adb backup -all | 使用默认方式备份应用和设备的数据(不包含apk)到当前目录下并保存为文件backup.ab |
-f | 指定备份文件 |
-obb|-noobb | 备份是否包含程序连带的扩展数据,默认是-noobb |
-apk|-noapk | 备份中是否包含apk |
-shared|-noshared | 是否备份设备共享的SD card内容 |
-system|-nosystem | 决定-all是否包含系统应用,默认的是-system |
[<packages...>] | 带包名表示只备份此包的相关信息 |
- 转发
- Mokey测试
Monkey命令参数 | 含义 |
-p | 参数指定一个或多个包。 adb shell monkey -p com.htc.Weather –p com.htc.pdfreader 100 |
-v | 指定日志的详细程度,总共分3个级别: Level 0:缺省值,提供启动提示、测试完成和最终结果等少量信息。 adb shell monkey -p com.htc.Weather –v 100 Level 1:详细的日志,包括每个发送到Activity的事件信息 adb shell monkey -p com.htc.Weather -v -v 100 Level 2:最详细的日志,包括了测试中选中/未选中的Activity信息 adb shell monkey -p com.htc.Weather -v -v -v 100 |
-s | 指定伪随机数生成器的seed值 adb shell monkey -p com.htc.Weather -s 10 100 |
--throttle <毫秒> | 指定用户操作(即事件)间的时延。 adb shell monkey -p com.htc.Weather –throttle 3000 100 |
--ignore-crashes | 程序崩溃仍发送事件,直到事件计数完成。 adb shellmonkey -p com.htc.Weather --ignore-crashes 100 |
--ignore-timeouts | 程序发生ANR时,仍然发送事件,直到事件计数完成。 |
--ignore-security-exceptions | 当应用程序发生许可错误时(如证书许可,网络许可等),仍然发送事件,直到事件计数完成。 |
--kill-process-after-error | 当应用程序发生错误时,停止运行并保持在当前状态,(应用程序仅是静止在发生错误时的状态,系统并不会结束该应用程序的进程) |
--monitor-native-crashes | 用于指定是否监视并报告应用程序发生崩溃的本地代码。 |
--pct-{+事件类别}{+事件类别百分比} | 用于指定每种类别事件的数目百分比(在Monkey事件序列中,该类事件数目占总事件数目的百分比) adb shell monkey –p <pkg> --pct-touch 10 1000 |
事件类别 | 含义 |
--pct-touch | 触摸事件:是一个down-up事件,它发生在屏幕上的某单一位置 |
--pct-motion | 动作事件:由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成 |
--pct-trackball | 轨迹事件:由一个或几个随机的移动组成,有时还伴随有点击 |
--pct-nav | 基本导航事件:由来自方向输入设备的up/down/left/right组成 |
--pct-majornav | 主要导航事件:此类事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键 |
--pct-syskeys | 系统按键:Home、Back、Start Call、End Call及音量控制键等 |
--pct-appswitch | 调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法 |
--pct-anyevent | 调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等 |
- 数据库操作
ADB命令详解
标签:rem 存储空间 size down nsa run jmp set code
本文系统来源:https://www.cnblogs.com/wx2017/p/10883189.html
内容总结
以上是互联网集市为您收集整理的ADB命令详解全部内容,希望文章能够帮你解决ADB命令详解所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。