0. 背景
由于工作中负责一个 log 工具的应用,经常有同事提需求,增加 XXX log 信息,我总是一脸懵B的给加上几条命令,想起以前还准备写一系列的 android 官方提供的工具的使用说明,写到一部分之后很久没管,后来发现博客数据被清了,现在正好从这里再开始。
1. dumpsys 是什么?
dumpsys
是 Android 系统提供的一个 debug 工具,用于获取系统服务的相关信息。
2. 如何使用 dumpsys?
最简单的用法就是执行命令adb shell dumpsys
,这条会输出所有的系统服务的诊断信息,一般来说我们不需要这么多的信息,刚刚试着在我使用的 Nexus 5 上执行了这条命令,得到了 13 万行的输出,这么多信息带来的第一个问题就是查找麻烦,其次慢,得到这 13 万行输出花费了 20 秒!
在使用中,我们仅仅需要这 13 万行信息中的一部分,毕竟我们需要查看的服务信息是比较明确的,并不需要知道系统全部的服务信息。
sumpsys
允许我们在使用时候指定服务名称,用于获取特定的服务信息,例如:
adb shell dumpsys package
以上命令就只提供了PackageManager
中包管理相关的信息。
3. 获取所有的系统服务
尽管 dumpsys
提供了获取单个服务信息的方法,但是我们还是需要知道系统有哪些服务,使用以下命令:
adb shell dumpsys -l
然后看到了 103 个服务,命令输出如下:
Currently running services:
DockObserver
SurfaceFlinger
accessibility
account
activity
alarm
android.security.keystore
appops
appwidget
assetatlas
audio
backup
battery
batteryproperties
batterystats
bluetooth_manager
carrier_config
clipboard
commontime_management
connectivity
consumer_ir
content
country_detector
cpuinfo
dbinfo
device_policy
deviceidle
devicestoragemonitor
diskstats
display
display.qservice
dreams
drm.drmManager
dropbox
ethernet
fingerprint
gfxinfo
graphicsstats
imms
input
input_method
iphonesubinfo
isms
isub
jobscheduler
launcherapps
location
lock_settings
media.audio_flinger
media.audio_policy
media.camera
media.camera.proxy
media.player
media.radio
media.resource_manager
media.sound_trigger_hw
media_projection
media_router
media_session
meminfo
midi
mount
netpolicy
netstats
network_management
network_score
nfc
notification
package
permission
phone
power
print
processinfo
procstats
restrictions
rttmanager
samplingprofiler
scheduling_policy
search
sensorservice
serial
servicediscovery
simphonebook
sip
statusbar
telecom
telephony.registry
textservices
trust
uimode
updatelock
usagestats
usb
user
vibrator
voiceinteraction
wallpaper
webviewupdate
wifi
wifip2p
wifiscanner
window
这里面比较坑的一件事就是
dumpsys
貌似没有帮助信息,接下来介绍单个服务命令可选项的时候,大多有一个通用的-h
来获取帮助信息。
4. dumpsys 单个服务时的可选命令
- -h: 许多服务我们可以通过
-h
获取相关的帮助信息 - -c: 部分服务提供了这个选项,用于获取
csv
格式的信息