adb
adb是什么? adb的全称为Android Debug Bridge,就是起到调试桥的作用 采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会daemon相关的网络端口 具体实现原理可以参考 ADB通信
adb作用 通过adb工具可以进行和设备之间的通讯 包括文件传输 获取设备的一些状态信息等 具体操作请看下方的adb命令
adb命令大全
adb基本语法
adb [-d | -e | <-s serialNumber> ] command
-d 指定当前唯一通过 USB 连接的 Android 设备为命令目标
-e 指定当前唯一运行的模拟器为命令目标
-s 指定相应 serialNumber 号的设备/模拟器为命令目标
熟悉的和常用的
###adb 连接相关
-
adb devices(显示连接的设备)
示例 List of devices attached xxxx device -
adb start-server(开始连接设备)
示例 无 效果启动adb和设备之间的连接 -
adb kill-server(断开连接)
示例 无 效果断杀死连接 和2配合一起重启adb连接 -
adb version(adb 版本)
示例 Android Debug Bridge version 1.0.39 Revision 3db08f2c6889-android Installed as /Users/wwl/Library/Android/sdk/platform-tools/adb -
adb root(root权限执行adb命令)
示例 adbd cannot run as root in production builds(失败的)
restarting adbd as root(成功的) -
adb tcpip 端口号
示例 无 (设备在 5555 端口监听 TCP/IP 连接) -
adb connect ip地址 例子 adb connect 10.4.52.140 (无线连接)
示例 connected to 10.4.52.140:5555 通过adb devices可以看到 10.4.52.140:5555 device 连接到5555端口 -
adb disconnect ip (断开无线连接)
adb 输入输出
-
adb pull <设备里的文件路径> [电脑上的目录](文件从手机拉到电脑)
示例 /sdcard/qichezhijia-test.txt: 1 file pulled. 4.4 MB/s (37322 bytes in 0.008s) -
adb push <电脑上的文件路径> <设备里的目录>(将文件从电脑传推手机)
示例 qichezhijia-test.txt: 1 file pushed. 1.5 MB/s (37322 bytes in 0.024s) -
adb shell input keyevent 《keycode》(adb 模拟按键/输入)
keycode 含义 3 HOME键 4 返回键 5 拨号 6 挂断电话 24 增加音量 25 降低音量 26 电源键 27 拍照 224 点亮屏幕 keyCode 详情查看KeyEvent
-
adb shell input swipe 300 1000 300 500 (滑动解锁)
解释 没有屏幕锁的时候 模拟滑动解锁 参数是 初始x 初始y 结束x 结束y -
adb shell input text 文本 (输入文字到获得焦点的输入框)
adb应用管理
- 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 | 包含已卸载应用 |
| 包名包含 字符串 | |
| 示例 加上参数-3 出来的内容是第三方的应用 (除了系统应用外的所有) | |
| 在举1例 packages 后边直接加上一个字符串 就会显示包含这个字符串的包 vrpark 我手机上装的 |
-
adb shell pm list packages | grep 字符串
grep命令就是linux下的那个命令 过滤用的 可以参考GREP LINUX
示例 输入 adb shell pm list packages | grep vrpark 输出 package:com.vrpark -
adb install <apk 路径> (安装apk)
示例 success 安装成功了 失败的时候有一个参考表输出 含义 INSTALL_FAILED_ALREADY_EXISTS 应用已经存在 INSTALL_FAILED_INVALID_APK 无效的 APK 文件 INSTALL_FAILED_INVALID_URI 无效的 APK 文件名 INSTALL_FAILED_INSUFFICIENT_STORAGE 空间不足 INSTALL_FAILED_DUPLICATE_PACKAGE 已经存在同名程序 INSTALL_FAILED_NO_SHARED_USER 请求的共享用户不存在 INSTALL_FAILED_UPDATE_INCOMPATIBLE 已经安装过签名不一样的同名应用,且数据没有移除 INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 请求的共享用户存在但签名不一致 INSTALL_FAILED_MISSING_SHARED_LIBRARY 安装包使用了设备上不可用的共享库 INSTALL_CANCELED_BY_USER 应用安装需要在设备上确认,但未操作设备或点了取消 INSTALL_FAILED_USER_RESTRICTED 用户被限制安装应用 可以参考 PackageManager.java
-
adb uninstall [-k] <包名> (删除应用) -k 参数可选,表示卸载应用但保留数据和缓存目录
示例 Success 删除成功 -
adb shell pm clear <包名> (清除数据 相当于设置里 清除缓存 清楚数据)
示例 Success 清除成功 -
adb shell dumpsys activity activities | grep mFocusedActivity #####(很重要 这个是查看正在前台的activity)
示例 桌面上的时候输入命令 显示 mFocusedActivity: ActivityRecord{7cec89e u0 com.huawei.android.launcher/.unihome.UniHomeLauncher t177} -
adb shell dumpsys activity -h (查看帮助命令)
Activity manager dump options: [-a] [-c] [-p PACKAGE] [-h] [WHAT] ... WHAT may be one of: a[ctivities]: activity stack state r[recents]: recent activities state b[roadcasts] [PACKAGE_NAME] [history [-s]]: broadcast state broadcast-stats [PACKAGE_NAME]: aggregated broadcast statistics i[ntents] [PACKAGE_NAME]: pending intent state p[rocesses] [PACKAGE_NAME]: process state o[om]: out of memory management perm[issions]: URI permission grant state prov[iders] [COMP_SPEC ...]: content provider state provider [COMP_SPEC]: provider client-side state s[ervices] [COMP_SPEC ...]: service state as[sociations]: tracked app associations service [COMP_SPEC]: service client-side state package [PACKAGE_NAME]: all state related to given package all: dump all activities top: dump the top activity WHAT may also be a COMP_SPEC to dump activities. COMP_SPEC may be a component name (com.foo/.myApp), a partial substring in a component name, a hex object identifier. -a: include all available server state. -c: include client state. -p: limit output to given package. --checkin: output checkin format, resetting data. --C: output checkin format, not resetting data.
-a 包括所有可用的服务器状态
-c 包括客户端状态
-p 限制输出为给定的包,例如:
adb shell dumpsys activity -p com.android.browser
例子 adb shell dumpsys activity top 和上边一样显示的正在前台的activity 并包含view信息 7. adb shell am (和应用交互 command 是命令)
| command | 作用 |
|---|---|
| start [options] | 启动 指定的 Activity |
| startservice [options] | 启动 指定的 Service |
| broadcast [options] | 发送 指定的广播 |
| force-stop | 停止 相关的进程 |
里还能带数据,就像写代码时的 Bundle 一样:
| 参数 | 含义 | |
|---|---|---|
| --esn <EXTRA_KEY> | null 值(只有 key 名) | |
| -e | --es <EXTRA_KEY> <EXTRA_STRING_VALUE> | string 值 |
| --ez <EXTRA_KEY> <EXTRA_基本类型_VALUE> | 基本类型 | |
| --ecn <EXTRA_KEY> <EXTRA_COMPONENT_NAME_VALUE> | component name | |
| --eu <EXTRA_KEY> <EXTRA_URI_VALUE> | URI | |
| 示例 adb shell am start -n com.tencent.mm/.ui.LauncherUI | ||
| 启动了微信页面 |
adb logcat
-
[adb] logcat [] ... [] ...
基本命令格式
示例 adb logcat ActivityManager:I MyApp:D *:S
表示输出 tag ActivityManager 的 Info 以上级别日志,输出 tag MyApp 的 Debug 以上级别日志,及其它 tag 的 Silent 级别日志(即屏蔽其它 tag 日志)。例子 adb logcat ActivityManager:|I url:D
-
级别 V D I W E F S 这几个我就不用表格了 偷个懒哈哈哈
-
adb logcat -v (选定日志的输出格式)
命令 | 格式
----|----
brief| 默认格式 <priority>/<tag>(<pid>): <message>
process|<priority>(<pid>) <message>
tag|<priority>/<tag>: <message>
raw|<message>
time|<datetime> <priority>/<tag>(<pid>): <message>
threadtime|<datetime> <pid> <tid> <priority> <tag>: <message>
long|[ <datetime> <pid>:<tid> <priority>/<tag> ]<message>
3. adb logcat -c (清除日志)
4.adb shell dmesg (内核日志)
示例 打印内核日志
adb 查看设备信息
-
adb shell getprop ro.product.model(获取设备型号)
示例 MHA-AL00 -
adb shell dumpsys battery (电池状况 )
示例 AC powered: false USB powered: true Wireless powered: false Max charging current: 0 Max charging voltage: 0 Charge counter: 0 status: 2 health: 2 present: true level: 78 scale: 100 voltage: 4170 temperature: 290 technology: Li-poly -
adb shell wm size (屏幕分辨率)
示例 Physical size: 1080x1920 -
adb shell wm density屏幕密度
示例 Physical density: 480 -
adb shell dumpsys window displays (显示屏幕参数)
-
adb shell settings get secure android_id (获取android_id)
-
adb shell dumpsys iphonesubinfo (获得 IMEI 需要在4.4以下版本)
示例 我没拿到 没有4.4以下手机 -
adb shell su service call iphonesubinfo 1 (5.0以上 IMEI)
我root了 没好用 还得再试一下 -
adb shell getprop ro.build.version.release(android 系统版本)
示例 7.0 -
adb shell cat /sys/class/net/wlan0/address (MAC 地址)
4c:49:e3:54:2f:10
adb shell
-
adb shell su (进入shell 切换到root权限)
-
mount (查看当前分区挂载情况)
-
adb shell monkey -p -v 500 (测试用的 )
刷机相关命令
-
adb reboot recovery (重启到 Recovery 模式)
-
adb reboot (从 Recovery 重启到 Android)
-
adb reboot recovery (重启到 Recovery 模式。)
-
adb sideload <path-to-update.zip> (通过 adb 上传和更新系统。)