原文地址: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.版本.sdk | SDK 版本 |
| ro.build.version.发布 | Android 系统版本 |
| ro.build.version.安全补丁 | Android 安全补丁程序级别 |
| ro.产品.型号 | 模型 |
| ro.产品.品牌 | 品牌 |
| ro.产品名称 | 设备名称 |
| ro.产品板 | 处理器型号 |
| ro.product.cpu.abilist | CPU 支持的 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