最全ADB命令手册(六)

278 阅读8分钟

原文地址:Most complete ADB command manual

作者:larson

最近拖更了这么久,因为博主我开始做起鸿蒙开发了,痛苦并痛苦着,一步一个坎,一个问题接着一个问题,让我分身乏力,最近刚过完一个坎,决定更新一下。

书接上文

查看设备信息

模型

命令:

adb shell getprop ro.product.model

示例结果:

Nexus 5

电池状态

命令:

adb shell dumpsys battery

输出结果

Current Battery Service state:
AC powered: false
USB powered: true
Wireless powered: false
status: 2
health: 2
present: true
level: 44
scale: 100
voltage: 3872
temperature: 280
technology: Li-poly

其中 scale 代表最大的电量,level 代表当前电量,上面的输出表示剩余电量 44%

屏幕分辨率

命令:

adb shell wm size

示例输出:

Physical size: 1080x1920

设备屏幕分辨率:1080px * 1920px

如果使用命令修改的话,输出可能是:

Physical size: 1080x1920
Override size: 480x1024

表示设备屏幕分辨率原来是 1080px * 1920px, 目前修改为 480px * 1024px

屏幕密度

命令:

adb shell wm density

示例输出:

Physical density: 420
The device screen density is 420dpi

如果使用命令修改的话,输出可能是:

Physical density: 480
Override density: 160

表示设备屏幕密度原来是 480dpi,现在修改为 160dpi

显示参数

命令:

adb shell dumpsys window displays

示例输出:

WINDOW MANAGER DISPLAY CONTENTS (dumpsys window displays)
  Display: mDisplayId=0
    init=1080x1920 420dpi cur=1080x1920 app=1080x1794 rng=1080x1017-1810x1731
    deferred=false layoutNeeded=false

其中 mDisplayId 为显示屏编号,init 为初始分辨率和屏幕密度,app 的高度比 init 里小一些,也就是说屏幕下方有虚拟按键,高度为 1920-1794=126px 42dp

android_id

命令:

adb shel settings get secure android_id

示例输出:

51b6be48bac8c569

国际移动识别码

在 Android4.4 及以下版本中,可以通过以下命令获取 IMEI:

adb shell dumpsys iphonesubinfo

示例输出:

Phone Subscriber Info:
  Phone Type = GSM
  Device ID = 860955027785041
The Device ID is IMEI.

在 Android5.0 及以上版本中,此命令输出为空,必须通过其他方式获取(需要 root 权限):

adb shell
su
service call iphonesubinfo 1

示例输出:

Result: Parcel(
  0x00000000: 00000000 0000000f 00360038 00390030'........8.6.0.9.'
  0x00000010: 00350035 00320030 00370037 00350038 '5.5.0.2.7.7.8.5.'
  0x00000020: 00340030 00000031 '0.4.1...')

提取里面的有效内容就是IMEI,比如这里是860955027785041。

参考:adb shell dumpsys iphonesubinfo 自 Android 5.0 Lollipop 以来无法正常工作

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,可以使用以下命令查看局域网

adb shell ifconfig wlan0

示例:

wlan0: ip 10.129.160.99 mask 255.255.240.0 flags [up broadcast running multicast]

或者

wlan0 Link encap:UNSPEC
          inet addr:10.129.168.57 Bcast:10.129.175.255 Mask:255.255.240.0
          inet6 addr: fe80::66cc:2eff:fe68:b6b6/64 Scope: Link
          UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
          RX packets:496520 errors:0 dropped:0 overruns:0 frame:0
          TX packets: 68215 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3000
          RX bytes: 116266821 TX bytes: 8311736

如果上述命令仍没有得到预期的信息,可以尝试以下命令(部分系统版本可用):

adb shell netcfg

示例输出:

wlan0 UP 10.129.160.99/20 0x00001043 f8:a9:d0:17:42:4d
lo UP 127.0.0.1/8 0x00000049 00:00:00:00:00:00
p2p0 UP 0.0.0.0/0 0x00001003 fa:a9:d0:17:42:4d
sit0 DOWN 0.0.0.0/0 0x00000080 00:00:00:00:00:00
rmnet0 DOWN 0.0.0.0/0 0x00000000 00:00:00:00:00:00
rmnet1 DOWN 0.0.0.0/0 0x00000000 00:00:00:00:00:00
rmnet3 DOWN 0.0.0.0/0 0x00000000 00:00:00:00:00:00
rmnet2 DOWN 0.0.0.0/0 0x00000000 00:00:00:00:00:00
rmnet4 DOWN 0.0.0.0/0 0x00000000 00:00:00:00:00:00
rmnet6 DOWN 0.0.0.0/0 0x00000000 00:00:00:00:00:00
rmnet5 DOWN 0.0.0.0/0 0x00000000 00:00:00:00:00:00
rmnet7 DOWN 0.0.0.0/0 0x00000000 00:00:00:00:00:00
rev_rmnet3 DOWN 0.0.0.0/0 0x00001002 4e:b7:e4:2e:17:58
rev_rmnet2 DOWN 0.0.0.0/0 0x00001002 4e:f0:c8:bf:7a:cf
rev_rmnet4 DOWN 0.0.0.0/0 0x00001002 a6:c0:3b:6b:c4:1f
rev_rmnet6 DOWN 0.0.0.0/0 0x00001002 66:bb:5d:64:2e:e9
rev_rmnet5 DOWN 0.0.0.0/0 0x00001002 0e:1b:eb:b9:23:a0
rev_rmnet7 DOWN 0.0.0.0/0 0x00001002 7a:d9:f6:81:40:5a
rev_rmnet8 DOWN 0.0.0.0/0 0x00001002 4e:e2:a9:bb:d0:1b
rev_rmnet0 DOWN 0.0.0.0/0 0x00001002 fe:65:d0:ca:82:a9
rev_rmnet1 DOWN 0.0.0.0/0 0x00001002 da:d8:e8:4f:2e:fe

您可以看到网络连接名称、激活状态、IP 地址、Mac 地址等信息。

Mac地址

命令:

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

示例输出:

f8:a9:d0:17:42:4d

这个就是局域网的 Mac 地址,移动网络或者其他连接信息可以通过上一节“IP 地址”中提到的 adb shell netcfg 命令查看。

CPU信息

命令:

adb shell cat /proc/cpuinfo

示例输出:

Processor: ARMv7 Processor rev 0 (v7l)
processor: 0
BogoMIPS: 38.40

processor: 1
BogoMIPS: 38.40

processor: 2
BogoMIPS: 38.40

processor: 3
BogoMIPS: 38.40

Features: swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt
CPU implementer: 0x51
CPU architecture: 7
CPU variant: 0x2
CPU part: 0x06f
CPU revision: 0

Hardware: Qualcomm MSM 8974 HAMMERHEAD (Flattened Device Tree)
Revision: 000b
Serial: 0000000000000000

这是 Nexus 5 的 CPU 信息,从输出中我们可以看到,使用的硬件是 Qualcomm MSM 8974,处理器编号为 0 到 3,所以是四核,使用的架构是 ARMv7 Processor rev 0 (v71)。

内存信息

命令:

adb shell cat /proc/meminfo

示例输出:

MemTotal: 1027424 kB
MemFree: 486564 kB
Buffers: 15224 kB
Cached: 72464 kB
SwapCached: 24152 kB
Active: 110572 kB
Inactive: 259060 kB
Active(anon): 79176 kB
Inactive(anon): 207736 kB
Active(file): 31396 kB
Inactive(file): 51324 kB
Unevictable: 3948 kB
Mlocked: 0 kB
HighTotal: 409600 kB
HighFree: 132612 kB
LowTotal: 617824 kB
LowFree: 353952 kB
SwapTotal: 262140 kB
SwapFree: 207572 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 265324 kB
Mapped: 47072 kB
Shmem: 1020 kB
Slab: 57372 kB
SReclaimable: 7692 kB
SUnreclaim: 49680 kB
KernelStack: 4512 kB
PageTables: 5912 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 775852 kB
Committed_AS: 13520632 kB
VmallocTotal: 385024 kB
VmallocUsed: 61004 kB
VmallocChunk: 209668 kB

其中,Memtotal 为设备总内存,MemFree 为当前空闲内存。

更多硬件和系统属性

可以通过以下命令查看设备更多硬件和系统属性:

adb shell cat /system/build.prop

这里会输出很多信息,包括前面提到的“型号”和“Android系统版本”。

输出还包含一些其他有用的信息,也可以通过 adb shell getprop 命令单独查看。一些属性如下所列:

属性名称意义
ro.build.版本.sdkSDK 版本
ro.build.version.发布Android 系统版本
ro.build.version.安全补丁Android 安全补丁程序级别
ro.产品.型号模型
ro.产品.品牌品牌
ro.产品名称设备名称
ro.产品板处理器型号
ro.product.cpu.abilistCPU 支持的 Abi 列表[第 1 部分]
持久性.sys.isUsbOtgEnabled是否支持OTG
dalvik.vm.heapsize每个应用程序的最大内存限制
ro.sf.lcd_密度屏幕密度

章节注释 1:

部分小厂定制的ROM可能修改了CPU支持的abi list的属性名,如果用ro.product.cpu.abilist属性名找不到的话,可以尝试:

adb shell cat /system/build.prop | grep ro.product.cpu.abi

示例输出:

ro.product.cpu.abi=armeabi-v7a
ro.product.cpu.abi2=armeabi