资讯专栏INFORMATION COLUMN

adb 常用命令

yanwei / 3243人阅读

摘要:常用命令的全称为,就是起到调试桥的作用。它的主要功能有运行设备的命令行管理模拟器或设备的端口映射计算机和设备之间上传下载文件将本地软件安装至模拟器或设备。

adb 常用命令

ADB的全称为Android Debug Bridge,就是起到调试桥的作用。ADB是android sdk(Android专属的软件开发工具包)里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的andriod设备。
它的主要功能有:运行设备的shell(命令行);管理模拟器或设备的端口映射;计算机和设备之间上传/下载文件;将本地apk软件安装至模拟器或android设备。

开启/关闭服务

有时候 adb 运行异常,就需要重启关闭开启 adb 服务。

adb kill-server         # 关闭服务
adb start-server        # 开启服务
查看当前连接的设备

示例:

$ adb devices
List of devices attached
192.168.91.185:5555    device
连接 USB 转为 WIFi

先使用 usb 连接到电脑上。

设置目标设备以侦听端口 5555 上的 TCP/IP 连接。

$ adb tcpip 5555
restarting in TCP mode port: 5555

断开 usb 连接,并访问设备的内部网址

$ adb connect device_ip_address
connected to device_ip_address:5555

查看设备是否已连接

$ adb devices
List of devices attached
192.168.2.127:5555     device

断开WiFi 连接的设备

$ adb disconnect
disconnected everything

给指定设备发送命令

当电脑连接多个设备时,发出 adb 命令,必须指定一个设备

adb -s serial_number command

例如:

adb -s BY2XEE157 install path_to_apk
安装/卸载应用

安装应用

adb install path_to_apk

覆盖安装应用

adb install -r path_to_apk

卸载应用

adb uninstall com.package.name

电脑与设备间的文件复制

从设备复制文件

adb pull remote local

复制文件到设备

adb push local remote

在上述命令中,localremote 指的是开发计算机(本地)和模拟器/设备实例(远程)上目标文件/目录的路径。例如:

adb push foo.txt /sdcard/foo.txt
输入设备日志到终端上

一直显示设备日志,直到你手动 (Ctrl + C) 停止

adb logcat

将设备缓存的日志输入到终端上,不会阻塞

adb logcat -d

将日志以文件形式输出到手机设备上,会阻塞,需手动 (Ctrl + C) 停止

adb logcat -f /sdcard/log.txt

PS:
(1). 如果在后台自动手机,不阻塞终端,则可在命令最后加一个 & 的参数;
(2). 加了&的命令,需要在不收集的时候手动停止,否则再次使用该命令时,会造成2个 logcat 的命令都写在同一个文件中。

停止方法:

adb shell kill -9 

其中logcat_pid 通过 如下命令获取

adb shell ps | grep logcat          # Linux & macOS 平台
adb shell ps | findstr "logcat"    # Windows 平台

清空日志缓存信息

adb logcat -c

过滤指定等级以上的日志

adb logcat *:

日志等级列表:

-- V : Verbose (明细);
-- D : Debug (调试);
-- I : Info (信息);
-- W : Warn (警告);
-- E : Error (错误);
-- F : Fatal (严重错误);
-- S : Silent(Super all output) (最高的优先级, 可能不会记载东西);

示例:命令 $ adb logcat *:E ,只显示错误级别以上的日志

查看设备已安装应用

查看设备所有应用包名,包括:系统应用、第三方应用

adb shell pm list package

查看设备所有第三方应用包名

adb shell pm list package -3
清除指定应用的所有数据(不卸载应用)
adb shell pm clear com.package.name
强制关闭应用
adb shell am force-stop com.package.name
截屏
adb shell screencap /sdcard/screen.png
录制视频
adb shell screenrecord /sdcard/demo.mp4

如果需要停止录制视频,需要等待3分钟或输入快捷键 Ctrl + C停止,也可以加 --time-limit TIME单位为秒
如:录制5分钟

adb shell screenrecord /sdcard/demo.mp4 --time-limit 300

当然还可以设置分辨率720P

adb shell screenrecord /sdcard/demo.mp4 --size 1280x720
获取输入法

获取当前设备默认输入法

adb shell settings get secure default_input_method

设置指定的输入法(设输入法为:com.android/input)为默认

adb shell ime set com.android/input                 # 两条命令作用一样
adb shell settings put secure default_input_method com.android/input

获取设备信息参数
adb shell getprop
重启手机命令

重启手机

adb reboot

重启手机到recovery界面

adb reboot recovery

重启手机到bootloader界面

adb reboot bootloader

重启手机到fastboot界面

adb reboot fastboot

获取设备属性

使用命令adb shell getprop +下面的属性,即可获取相应的属性

属性名 含义
ro.build.version.sdk SDK 版本
ro.build.version.release Android 系统版本
ro.product.model 型号
ro.product.brand 品牌
ro.product.name 设备名
$ adb shell getprop ro.product.model
vivo X9i
查看实时资源占用情况

示例:

$ adb shell top

User 4%, System 2%, IOW 0%, IRQ 0%
User 108 + Nice 0 + Sys 68 + Idle 2284 + IOW 0 + IRQ 6 + SIRQ 6 = 2472

  PID PR CPU% S  #THR     VSS     RSS PCY UID      Name
 2003  5   3% S    64 1257132K 154860K  fg u0_a19   com.android.systemui
  521  5   2% D    13 145376K  23044K  fg system   /system/bin/surfaceflinger
19825  4   0% R     1   6516K   1416K  fg shell    top
18585  7   0% S     1      0K      0K  fg root     kworker/u16:2
19563  7   0% D     1      0K      0K  fg root     mdss_fb0
 1452  5   0% S   178 2458344K 190788K  fg system   system_server
19795  7   0% S     1      0K      0K  fg root     kworker/u16:6
17950  7   0% S     1      0K      0K  fg root     kworker/u16:0
   53  4   0% S     1      0K      0K  fg root     rcuop/6
 2151  6   0% S    55 1708748K  76084K  fg system   com.vivo.daemonService

更多用法:

    -m num  显示最多的进程数目
    -n num  刷新多少次后退出
    -d num  刷新时间间隔
    -s col  以什么数据排列 (cpu,vss,rss,thr).
    -t      显示线程信息代替进程
    -h      显示帮助文档
查看内存信息
adb shell dumpsys meminfo                   # 查看整个设备的内存信息
adb shell dumpsys meminfo pid               # 查看指定进程的内存信息
adb shell dumpsys meminfo com.package.name  # 查看指定应用的内存信息

提示:

dalvik:是指dalvik所使用的内存。 native:是被native堆使用的内存。应该指使用CC++在堆上分配的内存。
VSS- Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
RSS- Resident Set Size 实际使用物理内存(包含共享库占用的内存)
PSS- Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
USS- Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS
查看指定应用的指定页面启动时间

可通过启动页面指定页面获得时间

adb shell am start -W -n  com.package.name/.activity

查看设备日志获得打开指定页面时间
示例:

$ adb shell logcat | grep ActivityManager

06-22 16:27:43.827  1452  2446 I ActivityManager: START u0 {cmp=com.babychat.parent.test/com.babychat.module.setting.view.SettingAty} from uid 10113 on display 0
06-22 16:27:43.967  1452  1609 I ActivityManager: Displayed com.babychat.parent.test/com.babychat.module.setting.view.SettingAty: +115ms
06-22 16:27:44.847  1452  2158 I ActivityManager: START u0 {act=android.content.pm.action.REQUEST_PERMISSIONS pkg=com.android.packageinstaller cmp=com.android.packageinstaller/.permission.ui.GrantPermissionsActivity (has extras)} from uid 10113 on display 0
06-22 16:27:44.867  1452  2473 I ActivityManager: START u0 {cmp=com.babychat.parent.test/com.babychat.activity.OutBoxActivity (has extras)} from uid 10113 on display 0
06-22 16:27:44.997  1452  1609 I ActivityManager: Displayed com.babychat.parent.test/com.babychat.activity.OutBoxActivity: +117ms
06-22 16:27:46.017  1452 26437 I ActivityManager: START u0 {act=android.content.pm.action.REQUEST_PERMISSIONS pkg=com.android.packageinstaller cmp=com.android.packageinstaller/.permission.ui.GrantPermissionsActivity (has extras)} from uid 10113 on display 0
06-22 16:28:30.527  1452  2446 I ActivityManager: START u0 {cmp=com.babychat.parent.test/com.babychat.activity.UserHomeHistoryAty (has extras)} from uid 10113 on display 0
06-22 16:28:30.687  1452  1609 I ActivityManager: Displayed com.babychat.parent.test/com.babychat.activity.UserHomeHistoryAty: +140ms (total +44s660ms)
查看当前 activity

示例:

$ adb shell dumpsys window | grep mCurrentFocus
mCurrentFocus=Window{2cf7a4d u0 com.babychat.parent.test/com.babychat.module.chatting.groupmemberlist.GroupMemberListActivity}
获取流量

adb 命令获取流量有多种方式。

需提前准备的数据

获取指定应用的 pid

adb shell ps | grep com.package.name

如:

$ adb shell ps | grep com.babychat.parent.test
u0_a113   9483  773   2033552 243156 SyS_epoll_ 0000000000 S com.babychat.parent.test
u0_a113   9518  773   1603852 48948 SyS_epoll_ 0000000000 S com.babychat.parent.test:pushservice

其中logcat_pid 通过 如下命令获取

adb shell ps | grep logcat          # Linux & macOS 平台
adb shell ps | findstr "logcat"     # Windows 平台

第二列的数值就是 pid

获取指定应用的 uid

adb shell cat /proc//status

PS:pid 第一点获取的数值
如:

$ adb shell cat /proc/2076/status
Name:    hat.parent.test
State:    S (sleeping)
Tgid:    9483
Pid:    9483
PPid:    773
TracerPid:    0
Uid:    10113    10113    10113    10113
Gid:    10113    10113    10113    10113
Ngid:    0
FDSize:    256
Groups:    3003 9997 50113 
VmPeak:     2210788 kB
VmSize:     2033632 kB
VmLck:           0 kB
VmPin:           0 kB
VmHWM:      362872 kB
VmRSS:      244244 kB
VmData:      378084 kB
VmStk:        8196 kB
VmExe:          20 kB
VmLib:      121404 kB
VmPTE:        1772 kB
VmSwap:           0 kB
Threads:    170
SigQ:    0/13358
SigPnd:    0000000000000000
ShdPnd:    0000000000000000
SigBlk:    0000000000001204
SigIgn:    0000000000000000
SigCgt:    00000002000094f8
CapInh:    0000000000000000
CapPrm:    0000000000000000
CapEff:    0000000000000000
CapBnd:    0000000000000000
Seccomp:    0
Cpus_allowed:    ff
Cpus_allowed_list:    0-7
voluntary_ctxt_switches:    17297
nonvoluntary_ctxt_switches:    10150

命令结果中第7行就是 uid 的结果了

1、读取/proc/uid_stat/ 目录下的文件

流量数据分为接收流量(tcp_rcv)和发送流量(tcp_snd)两部分,这两个状态数值我们可以通过读取/proc/uid_stat/目录下的两个文件得到。

$ adb shell cat /proc/uid_stat/10114/tcp_rcv
100046432
$ adb shell cat /proc/uid_stat/10114/tcp_snd
2020511

PS:

以上命令只能获取 TCP 协议的流量,UDP 等其他协议没有计算在内;

以上数据的单位为(Byte),且此数据是一直累加的,直到卸载应用才会删除

使用以上方法获取流量,需在操作前和操作后各获取一次数据,得到得到之间的相差值就可以了。

2、读取/proc/net/xt_qtaguid/stats | grep 流量数值

通过使用以下命令获取设备流量信息,如果指定应用,则获取应用的 uid,在该命令后添加参数 | grep uid

adb shell cat /proc/net/xt_qtaguid/stats

如:

$ adb shell cat /proc/net/xt_qtaguid/stats | grep 10114
40 wlan0 0x0 10114 0 6306390 5007 276578 3966 6306390 5007 0 0 0 0 276578 3966 0 0 0 0
41 wlan0 0x0 10114 1 104210738 82998 5295286 65789 104210738 82998 0 0 0 0 5295286 65789 0 0 0 0

PS:

第6列是接收的流量数值,单位:bytes;

第8列是发送的流量数值,单位:bytes;

如果结果出现多行数据,相加的总数即为结果

3、读取 /proc//net/dev 数值

通过获取到的 pid ,使用命令可得到:

$ adb shell cat /proc//net/dev

Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
rmnet_ipa0:     716       7    0    0    0     0          0         0      880      12    0    0    0     0       0          0
r_rmnet_data7:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
r_rmnet_data4:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet_data1:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet_data3:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
 wlan0: 320261121 1225926    0  124    0     0          0         0 28315746  159136    0    0    0     0       0          0
rmnet_data5:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
r_rmnet_data1:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet_data7:     620       8    0    0    0     0          0         0      880      12    0    0    0     0       0          0
dummy0:       0       0    0    0    0     0          0         0      210       3    0    0    0     0       0          0
  p2p0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
r_rmnet_data6:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
r_rmnet_data3:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
r_rmnet_data8:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet_data0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
r_rmnet_data0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet_data2:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet_data4:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
  sit0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
    lo:    2272      27    0    0    0     0          0         0     2272      27    0    0    0     0       0          0
r_rmnet_data5:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet_data6:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
r_rmnet_data2:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

PS:
1.wlan0 代表是 WiFi 接收发送的流量数值,单位为:bytes

获取电量

等待完善

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/13738.html

相关文章

  • Android 常用 adb 命令

    摘要:原文地址更多文章常用快捷键汇总基本知识点与常用配置一基础操作安装覆盖安装,保留数据和缓存文件安装到卡安装到内部系统内存安装低版本准许中的所有权限获取安装位置卸载卸载但保留数据和缓存文件重启手机启动服务关闭服务进入环境二设 原文地址:http://blog.csdn.net/u0108184... 更多文章: Android Studio常用快捷键汇总(mac) Gradle基本知识点...

    freewolf 评论0 收藏0
  • Android ADB常用命令

    摘要:查看已连接的设备使用此命令查看所有的连接设备,并列出它们的如果存在多个设备连接,可以使用来指定特定的设备。安装应用使用命令来安装,如果设备上已经安装了应用,可以使用可选参数重新进行安装并保留所有数据。 下面是一些我搜集的一些Android ADB(Android Debug Bridge)命令,在手动或自动构建和测试过程中它们非常好用。 查看已连接的设备 使用此命令查看所有的连接设...

    selfimpr 评论0 收藏0
  • ADB常用命令

    基本用法 命令语法 adb 命令的基本语法如下: adb [-d|-e|-s ] 如果只有一个设备/模拟器连接时,可以省略掉 [-d|-e|-s ] 这一部分,直接使用 adb 。 为命令指定目标设备 如果有多个设备/模拟器连接,则需要为命令指定目标设备。 参数含义 -d 指定当前唯一通过 USB 连接的 Android 设备为命令目标 -e 指定当前唯一运行的模拟器为命令目标 ...

    番茄西红柿 评论0 收藏0
  • Awesome Adb——一份超全超详细的 ADB 用法大全

    摘要:命令示例表示清除手机卫士的数据和缓存。调起命令格式例如表示调起微信的某。强制停止应用命令命令示例表示停止安全卫士的一切进程与服务。 showImg(https://segmentfault.com/img/remote/1460000006762491); ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android...

    CKJOKER 评论0 收藏0
  • 使用Python控制手机(一)

    摘要:使用包控制手机时,需要在手机上安装在电脑中使用弹出运行框,在框内输入调用命令行窗口。具备较多功能,在此不再赘述,百度具有较多资料。调试工具用于查看手机当前状态用浏览器控制手机调试手机,还可以实时的查找控件中的属性以及其它属性值等等。 1. 配置Python环境变量 Python环境变...

    ralap 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<