什么是 Android ADB shell“ Dumpsys”工具? 它的好处是什么?

我正在寻找 ADB shell dumpsys命令的完整列表以及所有命令的完整解释。

我在哪里可以找到这些信息?

220036 次浏览

什么是笨蛋,它的好处是什么

Dumpsys 是一个运行在设备上的 android 工具,它可以转储有关系统服务状态的有趣信息。

显而易见的好处:

  1. 以简单的字符串表示形式轻松获取系统信息的可能性。
  2. 可能性使用抛弃的 CPU,内存,电池,存储统计为一个 美丽的图表,这将允许您检查您的应用程序如何 会影响整个设备!

我们可以从 Dumpsys shell 命令检索什么信息以及如何使用它

如果你运行的是笨蛋程序,你会看到大量的系统信息。但是你只能使用这个大垃圾场的不同部分。

看到笨蛋的所有“子命令”都这么做:

dumpsys | grep "DUMP OF SERVICE"

产出:

DUMP OF SERVICE SurfaceFlinger:
DUMP OF SERVICE accessibility:
DUMP OF SERVICE account:
DUMP OF SERVICE activity:
DUMP OF SERVICE alarm:
DUMP OF SERVICE appwidget:
DUMP OF SERVICE audio:
DUMP OF SERVICE backup:
DUMP OF SERVICE battery:
DUMP OF SERVICE batteryinfo:
DUMP OF SERVICE clipboard:
DUMP OF SERVICE connectivity:
DUMP OF SERVICE content:
DUMP OF SERVICE cpuinfo:
DUMP OF SERVICE device_policy:
DUMP OF SERVICE devicestoragemonitor:
DUMP OF SERVICE diskstats:
DUMP OF SERVICE dropbox:
DUMP OF SERVICE entropy:
DUMP OF SERVICE hardware:
DUMP OF SERVICE input_method:
DUMP OF SERVICE iphonesubinfo:
DUMP OF SERVICE isms:
DUMP OF SERVICE location:
DUMP OF SERVICE media.audio_flinger:
DUMP OF SERVICE media.audio_policy:
DUMP OF SERVICE media.player:
DUMP OF SERVICE meminfo:
DUMP OF SERVICE mount:
DUMP OF SERVICE netstat:
DUMP OF SERVICE network_management:
DUMP OF SERVICE notification:
DUMP OF SERVICE package:
DUMP OF SERVICE permission:
DUMP OF SERVICE phone:
DUMP OF SERVICE power:
DUMP OF SERVICE reboot:
DUMP OF SERVICE screenshot:
DUMP OF SERVICE search:
DUMP OF SERVICE sensor:
DUMP OF SERVICE simphonebook:
DUMP OF SERVICE statusbar:
DUMP OF SERVICE telephony.registry:
DUMP OF SERVICE throttle:
DUMP OF SERVICE usagestats:
DUMP OF SERVICE vibrator:
DUMP OF SERVICE wallpaper:
DUMP OF SERVICE wifi:
DUMP OF SERVICE window:

一些转储示例和输出

1)获取所有可能的电池数据:

$~ adb shell dumpsys battery

你会得到输出:

Current Battery Service state:
AC powered: false
AC capacity: 500000
USB powered: true
status: 5
health: 2
present: true
level: 100
scale: 100
voltage:4201
temperature: 271 <---------- Battery temperature! %)
technology: Li-poly <---------- Battery technology! %)

2)获取 wifi 信息

~$ adb shell dumpsys wifi

产出:

Wi-Fi is enabled
Stay-awake conditions: 3


Internal state:
interface tiwlan0 runState=Running
SSID: XXXXXXX BSSID: xx:xx:xx:xx:xx:xx, MAC: xx:xx:xx:xx:xx:xx, Supplicant state: COMPLETED, RSSI: -60, Link speed: 54, Net ID: 2, security: 0, idStr: null
ipaddr 192.168.1.xxx gateway 192.168.x.x netmask 255.255.255.0 dns1 192.168.x.x dns2 8.8.8.8 DHCP server 192.168.x.x lease 604800 seconds
haveIpAddress=true, obtainingIpAddress=false, scanModeActive=false
lastSignalLevel=2, explicitlyDisabled=false


Latest scan results:


Locks acquired: 28 full, 0 scan
Locks released: 28 full, 0 scan


Locks held:

3)获取 CPU 信息

~$ adb shell dumpsys cpuinfo

产出:

Load: 0.08 / 0.4 / 0.64
CPU usage from 42816ms to 34683ms ago:
system_server: 1% = 1% user + 0% kernel / faults: 16 minor
kdebuglog.sh: 0% = 0% user + 0% kernel / faults: 160 minor
tiwlan_wq: 0% = 0% user + 0% kernel
usb_mass_storag: 0% = 0% user + 0% kernel
pvr_workqueue: 0% = 0% user + 0% kernel
+sleep: 0% = 0% user + 0% kernel
+sleep: 0% = 0% user + 0% kernel
TOTAL: 6% = 1% user + 3% kernel + 0% irq

4)获取内存使用信息

~$ adb shell dumpsys meminfo 'your apps package name'

产出:

** MEMINFO in pid 5527 [com.sec.android.widgetapp.weatherclock] **
native   dalvik    other    total
size:     2868     5767      N/A     8635
allocated:     2861     2891      N/A     5752
free:        6     2876      N/A     2882
(Pss):      532       80     2479     3091
(shared dirty):      932     2004     6060     8996
(priv dirty):      512       36     1872     2420


Objects
Views:        0        ViewRoots:        0
AppContexts:        0       Activities:        0
Assets:        3    AssetManagers:        3
Local Binders:        2    Proxy Binders:        8
Death Recipients:        0
OpenSSL Sockets:        0




SQL
heap:        0         MEMORY_USED:        0
PAGECACHE_OVERFLOW:        0         MALLOC_SIZE:        0

如果希望查看所有进程的信息,请使用 ~$ adb shell dumpsys meminfo

enter image description here

Dumpsys 是最终灵活和有用的工具!

如果你想使用这个工具不要忘记添加权限到您的 android 清单自动 android.permission.DUMP

尝试测试所有的命令,以了解更多关于笨蛋。快乐倾倒!

查看 笨蛋服务的源代码,您可以通过执行以下命令获得可用服务的列表:

adb shell service -l

然后,您可以提供您感兴趣的服务名称,以获得特定的信息。例如(注意,并非所有服务都提供转储信息) :

adb shell dumpsys activity
adb shell dumpsys cpuinfo
adb shell dumpsys battery

正如您在代码中看到的(以及 K _ Anas 的回答) ,如果您在没有任何服务名的情况下调用 Dumpsys,它将在一个大转储中转储所有服务的信息:

adb shell dumpsys

有些服务可以接收额外的参数,说明如果提供 -h参数,通常会解释哪些内容,例如:

adb shell dumpsys activity -h
adb shell dumpsys window -h
adb shell dumpsys meminfo -h
adb shell dumpsys package -h
adb shell dumpsys batteryinfo -h

我使用 笨蛋来捕捉应用程序崩溃和进程仍然处于活动状态。我使用它的情况是查找远程机器应用程序是否崩溃。

dumpsys | grep myapp | grep "Application Error"

或者

adb shell dumpsys | grep myapp | grep Error

或者任何有用的东西... 等等。

如果应用程序没有运行,你将得不到任何结果。 当应用程序停止时,Android 屏幕上会显示一条消息,进程仍然处于活动状态,如果你通过“ 注意”命令或其他方式检查,你会看到进程状态没有显示任何错误或崩溃的意思。但是,当你点击按钮关闭消息,应用程序进程将从进程清单。因此,在应用程序中没有任何代码的情况下捕捉崩溃状态是很难找到的。 但 笨蛋对你有帮助。

根据 官方 Android 信息关于 Dumpsys:

笨蛋工具在设备上运行,并提供有关 系统服务状态系统服务状态。

获取使用的可用服务的列表

adb shell dumpsys -l