android adb 相关介绍

1,041 阅读6分钟

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 连接相关

  1. adb devices(显示连接的设备)
    示例 List of devices attached xxxx device

  2. adb start-server(开始连接设备)
    示例 无 效果启动adb和设备之间的连接

  3. adb kill-server(断开连接)
    示例 无 效果断杀死连接 和2配合一起重启adb连接

  4. adb version(adb 版本)
    示例 Android Debug Bridge version 1.0.39 Revision 3db08f2c6889-android Installed as /Users/wwl/Library/Android/sdk/platform-tools/adb

  5. adb root(root权限执行adb命令)
    示例 adbd cannot run as root in production builds(失败的)
    restarting adbd as root(成功的)

  6. adb tcpip 端口号
    示例 无 (设备在 5555 端口监听 TCP/IP 连接)

  7. 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端口

  8. adb disconnect ip (断开无线连接)

adb 输入输出

  1. adb pull <设备里的文件路径> [电脑上的目录](文件从手机拉到电脑)
    示例 /sdcard/qichezhijia-test.txt: 1 file pulled. 4.4 MB/s (37322 bytes in 0.008s)

  2. adb push <电脑上的文件路径> <设备里的目录>(将文件从电脑传推手机)
    示例 qichezhijia-test.txt: 1 file pushed. 1.5 MB/s (37322 bytes in 0.024s)

  3. adb shell input keyevent 《keycode》(adb 模拟按键/输入)

    keycode含义
    3HOME键
    4返回键
    5拨号
    6挂断电话
    24增加音量
    25降低音量
    26电源键
    27拍照
    224点亮屏幕

    keyCode 详情查看KeyEvent

  4. adb shell input swipe 300 1000 300 500 (滑动解锁)
    解释 没有屏幕锁的时候 模拟滑动解锁 参数是 初始x 初始y 结束x 结束y

  5. adb shell input text 文本 (输入文字到获得焦点的输入框)

adb应用管理

  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包含已卸载应用
包名包含 字符串
示例 加上参数-3 出来的内容是第三方的应用 (除了系统应用外的所有)
在举1例 packages 后边直接加上一个字符串 就会显示包含这个字符串的包 vrpark 我手机上装的
  1. adb shell pm list packages | grep 字符串
    grep命令就是linux下的那个命令 过滤用的 可以参考GREP LINUX
    示例 输入 adb shell pm list packages | grep vrpark 输出 package:com.vrpark

  2. 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

  3. adb uninstall [-k] <包名> (删除应用) -k 参数可选,表示卸载应用但保留数据和缓存目录
    示例 Success 删除成功

  4. adb shell pm clear <包名> (清除数据 相当于设置里 清除缓存 清楚数据)
    示例 Success 清除成功

  5. adb shell dumpsys activity activities | grep mFocusedActivity #####(很重要 这个是查看正在前台的activity)
    示例 桌面上的时候输入命令 显示 mFocusedActivity: ActivityRecord{7cec89e u0 com.huawei.android.launcher/.unihome.UniHomeLauncher t177}

  6. 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

  1. [adb] logcat [] ... [] ...
    基本命令格式
    示例 adb logcat ActivityManager:I MyApp:D *:S
    表示输出 tag ActivityManager 的 Info 以上级别日志,输出 tag MyApp 的 Debug 以上级别日志,及其它 tag 的 Silent 级别日志(即屏蔽其它 tag 日志)。

    例子 adb logcat ActivityManager:|I url:D

  2. 级别 V D I W E F S 这几个我就不用表格了 偷个懒哈哈哈

  3. 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 查看设备信息

  1. adb shell getprop ro.product.model(获取设备型号)
    示例 MHA-AL00

  2. 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

  3. adb shell wm size (屏幕分辨率)
    示例 Physical size: 1080x1920

  4. adb shell wm density屏幕密度
    示例 Physical density: 480

  5. adb shell dumpsys window displays (显示屏幕参数)

  6. adb shell settings get secure android_id (获取android_id)

  7. adb shell dumpsys iphonesubinfo (获得 IMEI 需要在4.4以下版本)
    示例 我没拿到 没有4.4以下手机

  8. adb shell su service call iphonesubinfo 1 (5.0以上 IMEI)
    我root了 没好用 还得再试一下

  9. adb shell getprop ro.build.version.release(android 系统版本)
    示例 7.0

  10. adb shell cat /sys/class/net/wlan0/address (MAC 地址)
    4c:49:e3:54:2f:10

adb shell

  1. adb shell su (进入shell 切换到root权限)

  2. mount (查看当前分区挂载情况)

  3. adb shell monkey -p -v 500 (测试用的 )

刷机相关命令

  1. adb reboot recovery (重启到 Recovery 模式)

  2. adb reboot (从 Recovery 重启到 Android)

  3. adb reboot recovery (重启到 Recovery 模式。)

  4. adb sideload <path-to-update.zip> (通过 adb 上传和更新系统。)