常用adb命令整理

2023-10-31

一、adb介绍

adb:Android Debug Bridge,Android 调试桥的缩写,adb 是一个 C/S 架构的命令行工具,

主要由 3 部分组成:

  1. 运行在 PC 端的 Client : 可以通过它对 Android 应用进行安装、卸载及调试
  2. 运行在 PC 端的 Service : 其管理客户端到 Android 设备上 adb 后台进程的连接
  3. 运行在 Android 设备上的 adb 后台进程

二、ADB安装

默认电脑已经安装SDK的,如果没有也可以直接网上下载一个adb工具包。

假定pc上adb工具所在目录:

H:\rxw\windows\adb_fastboot

将adb路径添加到环境变量中(这台电脑→属性→高级系统设置→环境变量)

双击 Path,然后点击“新建”,名字可以自取,然后将adb工具的路径填进去。

添加完保存就可以输入命令验证了 windows+R 打开cmd 输入adb,出现版本号及菜单即配置完成

C:\Users\Administrator

Android Debug Bridge version 1.0.41
Version 31.0.2-eng.lsh.20220519.123535
RockChip modified
Installed as H:\rxw\windows\adb_fastboot\adb.exe

global options:
 -a         listen on all network interfaces, not just localhost
 -d         use USB device (error if multiple devices connected)
 -e         use TCP/IP device (error if multiple TCP/IP devices available)
 -s SERIAL  use device with given serial (overrides $ANDROID_SERIAL)
            or devices devpath like:
            adb -s "\\?\usb#vid_2207&pid_0006#6&3795fe82&1&1#{f72fe0d4-cbcb-407d-8814-9ed673d0dd6b}" shell
            adb -s usb:3-1.2 shell
 -t ID      use device with given transport id
 -H         name of adb server host [default=localhost]
 -P         port of adb server [default=5037]
 -L SOCKET  listen on given socket for adb server [default=tcp:localhost:5037]

二、adb命令的语法

adb 命令的基本语法如下:

adb [-d|-e|-s <serialNumber>] <command>

如果只有一个设备/模拟器连接时,可以省略掉 [-d| -e|-s ] 这一部分,直接使用

adb <command>

为命令指定目标设备
如果有多个设备/模拟器连接,则需要为命令指定目标设备。

参数 含义
-d 指定当前唯一通过 USB 连接的 Android 设备为命令目标
-e 指定当前唯一运行的模拟器为命令目标
-s serialNumber> 指定相应 serialNumber 号的设备/模拟器为命令目标

serialNumber 可以通过 adb devices 命令获取,如:

C:\Users\Administrator>adb devices
List of devices attached
0123456789ABCDEF        device

比如这时想指定 0123456789ABCDEF 这个设备来运行 adb 命令获取屏幕分辨率:

adb -s 0123456789ABCDEF shell wm size

三、android常用adb命令

启动adb服务或停止adb服务

  • adb kill-server:结束 adb 服务
  • adb start-server:启动 adb 服务
    一般在连接出现异常,使用 adb devices 未正常列出设备,设备状态异常时使用 kill-server,然后运行 start-server 进行重启服务

1)设备连接信息

adb devices:获取设备信息

2)安装应用

adb install [-lrtsdg] <path_to_apk>

如:adb install xxx.apk:安装应用

参数 含义
-r 允许覆盖安装
-t 允许测试包 (允许安装 AndroidManifest.xml 里 application 指定 android:testOnly=“true” 的应用)
-d 允许降级覆盖安装
-g 授予所有运行时权限
-s 将应用安装到 sdcard
-l 将应用安装到保护目录 /mnt/asec

如: adb -s 设备名称 install xxx.apk:多个设备,安装到指定设备(通过adb devices获取设备名称)

一口君常用:

adb -t install xxx.apk

3)卸载应用

adb uninstall [-k] <packagename>:卸载应用
  • -k 参数可选,表示卸载应用但保留数据和缓存目录
  • adb shell pm uninstall --user 0 包名:卸载系统应用
  • adb shell cmd package install-existing 包名:卸载系统应用后,再恢复系统应用

4)清除应用数据与缓存

  • adb shell pm clear 包名:清除应用缓存

效果相当于在设置里的应用信息界面点击了「清除缓存」和「清除数据」。

5)查看前台 Activity(查看当前活动窗口的类名)

  • adb shell dumpsys window | findstr mCurrentFocus

6)查看应用安装路径

adb shell pm path <PACKAGE>

如:

C:\Users\Administrator>adb shell pm path com.upuphone.push
package:/data/app/~~Mbj7C7djGMaqwuXZBfScGg==/com.upuphone.push-bIO4mliiakFsN-xk4IxnTA==/base.apk

7)查看应用列表

命令格式:

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> 字符串

8)查看应用版本信息

adb shell dumpsys package <package_name> | findstr version

如:

C:\Users\Administrator>adb shell dumpsys package com.example.sdkdemo | findstr version
    versionCode=3 minSdk=29 targetSdk=32
    versionName=2.1
    signatures=PackageSignatures{d9064a9 version:2, signatures:[f4d74dfb], past signatures:[]}

如果是系统应用,则会有2个版本,下面的是系统app本身的版本,上面的是升级之后的系统app版本如:

C:\Users\Administrator>adb shell dumpsys package com.android.settings | findstr version
    versionCode=30 minSdk=30 targetSdk=30
    versionName=11
    signatures=PackageSignatures{af44d47 version:3, signatures:[2bf9b00d], past signatures:[]}
    versionCode=30 minSdk=30 targetSdk=30
    versionName=11
    signatures=PackageSignatures{a29ef12 version:0, signatures:[], past signatures:[]}

9)获取log

获取安卓运行的log
命令:

adb logcat <设备里的文件路径> [电脑上的目录]
例1:清除logcat所有log
adb logcat -c
例2:保存logcat所有log到本地文件peng.log中
adb logcat -> peng.log

按ctrl+c停止保存

10)复制设备里的文件到电脑pull

命令:

adb pull <设备里的文件路径> [电脑上的目录]

其中 电脑上的目录 参数可以省略,默认复制到当前目录。

例:

adb pull /sdcard/sr.mp4 ~/tmp/

小技巧:
设备上的文件路径可能需要 root 权限才能访问,如果你的设备已经 root 过,可以先使用 adb shell 和 su 命令在 adb shell 里获取 root 权限后,先 cp /path/on/device /sdcard/filename 将文件复制到 sdcard,然后 adb pull /sdcard/filename /path/on/pc。

11)复制电脑里的文件到设备push

命令:

adb push <电脑上的文件路径> <设备里的目录>

例:拷贝可执行程序modetest到bin目录下

adb root
adb remount
adb push ~/modetest /bin/

前面两个命令是获取权限

12)查看设备信息

型号
adb shell getprop ro.product.model

如:

C:\Users\Administrator>adb shell getprop ro.product.model
LE2123
电池电量
adb shell dumpsys battery

如:

C:\Users\Administrator>adb shell dumpsys battery
Current Battery Service state:
  AC powered: false
  USB powered: true
  Wireless powered: false
  Max charging current: 4870000
  Max charging voltage: 9000000
  Charge counter: 2200000
  status: 5
  health: 2
  present: true
  level: 100
  scale: 100
  voltage: 4372
  temperature: 350
  technology: Li-ion

其中 scale 代表最大电量,level 代表当前电量。上面的输出表示还剩下 100% 的电量。

13)屏幕分辨率wm size

项目 Value
adb命令 说明
adb shell wm size 查看分辨率
adb shell wm size 1920x1280 修改分辨率 (小写的x)
adb shell wm density 240 修改dpi
adb shell wm density reset 重置density
adb shell wm size reset 重置分辨率

输出示例:

Physical size: 1080x1920

表示该设备屏幕分辨率为 1080px * 1920px
如果使用命令修改过,那输出可能是:

Physical size: 1080x1920
Override size: 480x1024

表明设备的屏幕分辨率原本是 1080px * 1920px,当前被修改为 480px * 1024px。

14)屏幕密度wm density

项目 Value
adb命令 说明
adb shell wm density 查看dpi。
adb shell wm density 240 修改dpi
adb shell wm density reset 重置density

输出示例:

Physical density: 420

如果使用命令修改过,那输出可能是:

Physical density: 480
Override density: 160

表明设备的屏幕密度原来是 480dpi,当前被修改为 160dpi。

15)android_id

adb shell settings get secure android_id

如:

C:\Users\Administrator>adb shell settings get secure android_id
6596f32b63225bac

16)IMEI

android11.0获取方式(需要root权限)

adb shell
su
service call iphonesubinfo 1

如:

C:\Users\Administrator>adb shell
OnePlus9Pro:/ # su
su
/system/bin/sh: su: inaccessible or not found
127|OnePlus9Pro:/ # service call iphonesubinfo 1
service call iphonesubinfo 1
Result: Parcel(
  0x00000000: 00000000 0000000f 00300030 00300031 '........0.0.1.0.'
  0x00000010: 00380030 00340034 00360037 00310039 '0.8.4.4.7.6.9.1.'
  0x00000020: 00300032 00000037                   '2.0.7...        ')
OnePlus9Pro:/ #

把里面的有效内容提取出来就是 IMEI 了,比如这里的是 001008447691207。

退出adb shell 方式:

输入exit即可

17)Android 系统版本

adb shell getprop ro.build.version.release

如:

C:\Users\Administrator>adb shell getprop ro.build.version.release
11

18)IP 地址

设备的 IP 地址的时候都得「设置」-「关于手机」-「状态信息」-「IP地址」很烦对不对?通过 adb 可以方便地查看。

adb shell ifconfig | grep Mask

如:

inet addr:10.130.245.230  Mask:255.255.255.252
inet addr:127.0.0.1  Mask:255.0.0.0

那么 10.130.245.230 就是设备 IP 地址。

在有的设备上这个命令没有输出,如果设备连着 WiFi,可以使用如下命令来查看局域网 IP:

adb shell ifconfig wlan0

如:

C:\Users\Administrator>adb shell ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr a6:44:63:ac:88:7e  Driver cnss_pci
          inet addr:10.20.1.158  Bcast:10.20.1.255  Mask:255.255.254.0
          inet6 addr: fe80::a444:63ff:feac:887e/64 Scope: Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:21765 errors:0 dropped:2 overruns:0 frame:0
          TX packets:11168 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3000
          RX bytes:6121620 TX bytes:3229281

inet addr:10.20.1.158就是ip地址。

19) Mac 地址

adb shell cat /sys/class/net/wlan0/address

如:

C:\Users\Administrator>adb shell cat /sys/class/net/wlan0/address
a6:44:63:ac:88:7e

这查看的是局域网 Mac 地址,移动网络或其它连接的信息可以通过

adb shell netcfg 命令来查看

20)CPU 信息

adb shell cat /proc/cpuinfo

21)内存信息

adb shell cat /proc/meminfo

其中,MemTotal 就是设备的总内存,MemFree 是当前空闲内存。

22)屏幕截图screencap

adb exec-out screencap -p > sc.png

其中 -p指的是保存文件格式为png格式,sc.png为指定的文件名

然而实测这个截的图片,无法打开。
参考链接: link

可以使用下面的方式:

先截图保存到设备里:

adb shell screencap -p /sdcard/sc.png

然后将 png 文件导出到电脑:

adb pull /sdcard/sc.png

23)录制屏幕screenrecord

录制屏幕以 mp4 格式保存到 /sdcard:

adb shell screenrecord /sdcard/filename.mp4

需要停止时按 Ctrl+C,默认录制时间和最长录制时间都是 180 秒。

如果需要导出到电脑:

adb pull /sdcard/filename.mp4

开发过程与产品或测试沟通经常用到(异地办公时)

24)设置系统日期和时间

注:需要 root 权限。

adb shell
su
date -s 20230529.131500

表示将系统日期和时间更改为 2023 年 05 月 29 日 13 点 15 分 00 秒。

25)检测设备是否已 root

adb shell
su

此时命令行提示符是 $ 则表示没有 root 权限,是 # 则表示已 root。

26)使用 Monkey 进行压力测试

Monkey 可以生成伪随机用户事件来模拟单击、触摸、手势等操作,可以对正在开发中的程序进行随机压力测试。

简单用法:

adb shell monkey -p <packagename> -v 500

表示向 指定的应用程序发送 500 个伪随机事件。

27)模拟按键/输入input

adb shell 里有个很实用的命令叫 input,通过它可以做一些有趣的事情。

adb shell input keyevent <keycode>

不同的 keycode 能实现不同的功能

项目 Value
3 HOME 键
4 返回键
5 打开拨号应用
6 挂断电话
24 增加音量
25 降低音量
26 电源键
27 拍照(需要在相机应用里)
82 菜单键
85 播放/暂停
86 停止播放
87 播放下一首
88 播放上一首
122 移动光标到行首或列表顶部
123 移动光标到行末或列表底部
126 恢复播放
127 暂停播放
164 静音
176 打开系统设置
187 切换应用
207 打开联系人
208 打开日历
209 打开音乐
210 打开计算器
220 降低屏幕亮度
221 提高屏幕亮度
223 系统休眠
224 点亮屏幕
231 打开语音助手
276 如果没有 wakelock 则让系统休眠

28)网络连接connect

除了用usb连接安卓设备之外,还可以通过网络来连接
首先确认pc和设备是网络互通的,
然后使用下面命令:

adb connect 192.168.10.111:5555
adb shell
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

常用adb命令整理 的相关文章

随机推荐

  • nginx:accept() failed (24: Too many open files)解决方法

    有一台服务器访问量非常高 使用的是nginx 错误日志不停报以下错误 2010 05 26 08 53 49 alert 13576 0 accept failed 24 Too many open files 2010 05 26 08
  • 【R语言】期末大作业

    头部 title LZW HR dashboard report output flexdashboard flex dashboard orientation columns vertical layout fill source cod
  • Ant Design Cascader 交互场景

    何时使用 需要从一组相关联的数据集合进行选择 例如省市区 公司层级 事物分类等 从一个较大的数据集合中进行选择时 用多级分类进行分隔 方便选择 比起 Select 组件 可以在同一个浮层中完成选择 有较好的体验 业务场景 提交选择器子选项
  • C++面试题(四)——智能指针的原理和实现

    C 面试题 四 智能指针的原理和实现 tanglu2004 http blog csdn net worldwindjp C 面试题 一 二 和 三 都搞定的话 恭喜你来到这里 这基本就是c 面试题的最后一波了 1 你知道智能指针吗 智能指
  • Commit Lint 代码提交规范

    Commit Lint 代码提交规范 前端后端都可以这样配置的 install commitlint npm install save dev commitlint config conventional commitlint cli In
  • 【待完成】从StrongPity一联网组件到APT的溯源与追踪-中-从单一样本到历史样本和初始载荷

    从单一样本追踪溯源APT历史样本和初始载荷 基于PE结构寻找同源样本 Icon图标Hash ImpHash和version info 基于组件找初始载荷 通过初始载荷扩线 基于PE结构寻找同源样本 Icon图标Hash 通过VT搜索该PE文
  • Python爬虫案例解析:五个实用案例及代码示例(学习爬虫看这一篇文章就够了)

    导言 Python爬虫是一种强大的工具 可以帮助我们从网页中抓取数据 并进行各种处理和分析 在本篇博客中 我们将介绍五个实用的Python爬虫案例 并提供相应的代码示例和解析 通过这些案例 读者可以了解如何应用Python爬虫来解决不同的数
  • L-shape 方法

    L shape 方法是求解两阶段随机规划的一种常用方法 基本思想是利用切平面将第二阶段的反馈函数线性化 在构造切平面条件时有点类似 bender s 方法 注 这个图形中黑实线 Q x mathcal Q x Q x 就是下面模型中的
  • 【已解决】ModuleNotFoundError: No module named ‘distutils.util‘

    系统从Ubuntu18 04升级到20 04 内核也变动了很多次 之前运行在python3 6正常的代码突然报错 ModuleNotFoundError No module named distutils util 网上的解决方法 sudo
  • 字节跳动技术团队年度 TOP10 技术干货,陪你度过不平凡的 2020

    2020 注定是不平凡的一年 在这特殊的一年里 字节跳动技术团队依旧在技术人身边 分享字节跳动的技术实践 本年度字节跳动技术团队共发布了50篇技术干货 其中许多都受到读者的喜爱 值此元旦佳节 我们精选出了其中最受大家欢迎的10 篇文章 供大
  • r语言向量代码如何创建函数c,如何使用R中的rep函数生成的向量创建矩阵?

    仅当我们传递偶数个元素时 才能生成矩阵 如果要使用由rep函数生成的向量创建矩阵 则该向量的长度必须可除以2 例如 如果我们有一个由rep函数创建的向量x 其长度为20 则矩阵说M可以使用matrix x ncol 2 构造使用该向量的10
  • 实验9 I/O流(P293)

    实验目的和要求 1 掌握格式化的输入输出方法 2 熟悉系统提供的输入操作函数 3 掌握磁盘文件的输入输出方法 实验内容 1 程序sy9 1 cpp用以打印表中的数据 但程序中存在逻辑错误 上机调试后写出正确的代码 原程序如下 sy9 1 c
  • 使用javascript写一个CRC16(CCITT)校验

    CRC16 CCITT 校验是一种用于数据传输的常用校验方法 在 JavaScript 中 我们可以使用以下代码实现这种校验 function crc16 data var crc 0xFFFF var polynomial 0x1021
  • 如何分析AWR报告

    AWR 存储位置 SYSAUX表空间 详细信息视图dba hist snapshot 存储策略 60分钟一个 存七天 用途 AWR并不像其他V 视图或者表一样诊断实时问题 只是用来诊断历史性能问题 比如数据库响应慢 大量等待事件 慢SQL
  • 永洪BI助力华海药业数字化转型,挖掘药企发展新优势

    医药制造业是我国国民经济的重要组成部分 在整个消费市场中有着举足轻重的地位 对于生物医药企业来讲 只有合规运营 降本增效 才能保持长期可持续发展 这种情况下 数字化转型将成为生物医药企业的必然选择 也是我国药企向创新型技术型转型升级 提升自
  • Unity3d

    环境配置及Vuforia的使用 vuforia官网 https developer vuforia com 环境配置 vuforia内的SDK支持的Unity版本现为2018 4 所以需要下载Unity2018 4版本 笔者下载的是2018
  • Matlab如何从dat或者txt文件读入数据

    Matlab中可以使用命令 load data dat 或者 load data txt 或者 data in textread data txt data in textread data dat 以上两个命令 只适用于纯数据 且只有一列
  • layui的自定义page

    一 前端页面使用laypage div align center style margin top 20px div let totalCount 0 getPageData 1 6 function getPageData page li
  • DAY34:贪心算法(一)贪心算法理论基础

    文章目录 什么是贪心算法 贪心算法的两个极端 真正需要数学推导的情况 类似环形链表 贪心的套路 课程链接 贪心算法理论基础 哔哩哔哩 bilibili 什么是贪心算法 贪心算法的本质就是找到每个阶段的局部最优 从而去推导全局最优 例如一堆不
  • 常用adb命令整理

    一 adb介绍 adb Android Debug Bridge Android 调试桥的缩写 adb 是一个 C S 架构的命令行工具 主要由 3 部分组成 运行在 PC 端的 Client 可以通过它对 Android 应用进行安装 卸