Обзор dumpsys и список сервисов:
Полный список того, что можно дампить, выдаёт флаг -l:
Код: Выделить всё
$ adb shell dumpsys -l
Currently running services:
SurfaceFlinger
accessibility
activity
alarm
appops
audio
battery
batterystats
connectivity
...
wifi
windowКод: Выделить всё
adb shell dumpsys > full_dump.txt
adb shell dumpsys --skip meminfo,cpuinfo > dump_lite.txtКод: Выделить всё
adb shell dumpsys -t 30 wifiactivity: стеки, задачи, текущий экран:
Сервис activity знает всё про Activity, задачи, процессы, сервисы и broadcast-очереди. Самый частый практический вопрос: что сейчас на экране. Ответ:
Код: Выделить всё
$ adb shell dumpsys activity activities | grep topResumedActivity
topResumedActivity=ActivityRecord{e2a1b4d u0 com.android.settings/.Settings t127}Чуть выше в том же выводе видны задачи (tasks) и их стеки:
Код: Выделить всё
* Task{f3c9e21 #127 type=standard A=10123:com.android.settings U=0 visible=true mode=fullscreen}
* Hist #1: ActivityRecord{e2a1b4d u0 com.android.settings/.Settings t127}
* Hist #0: ActivityRecord{91c44a0 u0 com.android.settings/.SubSettings t127}window: фокус, размеры, политика:
WindowManager отвечает за окна, и его дамп решает классическую задачу автотестера: кто держит фокус ввода. Это не всегда та же сущность, что верхняя Activity (диалог, IME, системный оверлей):
Код: Выделить всё
$ adb shell dumpsys window windows | grep -E "mCurrentFocus|mFocusedApp"
mCurrentFocus=Window{a4f2c1e u0 com.android.settings/com.android.settings.Settings}
mFocusedApp=ActivityRecord{e2a1b4d u0 com.android.settings/.Settings t127}Код: Выделить всё
$ adb shell dumpsys window displays | grep -E "init|cur"
init=1080x2400 420dpi cur=1080x2400 app=1080x2236 rng=1080x1020-2400x2340package: версии и разрешения:
PackageManager хранит досье на каждый установленный пакет. Версия приложения без выкачивания APK:
Код: Выделить всё
$ adb shell dumpsys package org.telegram.messenger | grep -E "versionName|versionCode"
versionCode=42150 minSdk=21 targetSdk=34
versionName=11.9.0Код: Выделить всё
runtime permissions:
android.permission.POST_NOTIFICATIONS: granted=true
android.permission.CAMERA: granted=false
android.permission.RECORD_AUDIO: granted=truebattery: заряд и health:
Код: Выделить всё
$ adb shell dumpsys battery
Current Battery Service state:
AC powered: false
USB powered: true
Wireless powered: false
Max charging current: 1500000
Charge counter: 3187000
status: 2
health: 2
level: 87
scale: 100
voltage: 4312
temperature: 304
technology: Li-ionСервис умеет подменять состояние, root не нужен. Так тестируют поведение приложения при низком заряде:
Код: Выделить всё
adb shell dumpsys battery unplug
adb shell dumpsys battery set level 5
adb shell dumpsys battery set status 3Код: Выделить всё
adb shell dumpsys battery resetcpuinfo, meminfo, procstats:
Три сервиса дают три взгляда на ресурсы. cpuinfo это срез нагрузки за последние десятки секунд:
Код: Выделить всё
$ adb shell dumpsys cpuinfo
Load: 7.12 / 6.98 / 6.51
CPU usage from 31992ms to 7081ms ago (2026-06-12 14:02:11 to 2026-06-12 14:02:36):
42% 1213/system_server: 28% user + 13% kernel / faults: 1422 minor 4 major
18% 2841/com.android.systemui: 14% user + 4.1% kernel
9.6% 14233/org.telegram.messenger: 7.2% user + 2.4% kernelКод: Выделить всё
$ adb shell dumpsys meminfo org.telegram.messenger
** MEMINFO in pid 14233 [org.telegram.messenger] **
Pss Private Private SwapPss Rss
Total Dirty Clean Dirty Total
------ ------ ------ ------ ------
Native Heap 98342 98256 0 1240 101332
Dalvik Heap 12404 12320 0 180 18230
...
TOTAL 287654 231120 18234 4820 412110
App Summary
Java Heap: 24620
Native Heap: 98342
Graphics: 71240procstats добавляет измерение времени: сколько процент времени процесс жил в памяти и сколько занимал:
Код: Выделить всё
$ adb shell dumpsys procstats --hours 3
* com.android.systemui / u0a142 / v34:
TOTAL: 100% (182MB-195MB-204MB/148MB-160MB-167MB over 12)
Persistent: 100% (...)Сеть: netstats, connectivity, wifi:
netstats считает трафик по UID. Сначала узнаём UID пакета, потом ищем его в статистике:
Код: Выделить всё
$ adb shell dumpsys package org.telegram.messenger | grep userId
userId=10234
$ adb shell dumpsys netstats | grep -A 3 "uid=10234"
ident=[{type=WIFI, metered=false}] uid=10234 set=DEFAULT tag=0x0
st=1749700800 rb=18734231 rp=15234 tb=2345112 tp=8123Код: Выделить всё
$ adb shell dumpsys connectivity | grep -m 5 -E "Active default network|Capabilities"
Active default network: 102
Capabilities: NET_CAPABILITY_NOT_METERED&NET_CAPABILITY_INTERNET&NET_CAPABILITY_VALIDATED ...Код: Выделить всё
$ adb shell dumpsys wifi | grep "mWifiInfo"
mWifiInfo SSID: "Rostelecom_2845", BSSID: a4:2b:8c:11:7e:90, MAC: 02:00:00:00:00:00, IP: /192.168.0.103, Supplicant state: COMPLETED, Wi-Fi standard: 5, RSSI: -54, Link speed: 433Mbps, Frequency: 5180MHznotification:
Сервис notification хранит активные уведомления, каналы и их важность. Дежурный сценарий: пользователь жалуется, что пуши не приходят. Смотрим каналы пакета:
Код: Выделить всё
$ adb shell dumpsys notification | grep -A 2 "org.telegram.messenger"
NotificationChannel{mId='messages', mName=Messages, mImportance=4, ...}
NotificationChannel{mId='silent', mName=Silent, mImportance=0, ...}Код: Выделить всё
$ adb shell dumpsys notification --noredact | grep -A 12 "pkg=org.telegram.messenger"
NotificationRecord(0x8f12aa3: pkg=org.telegram.messenger user=UserHandle{0} id=12)
channel id=messages
extras={
android.title=String (Дима)
android.text=String (го завтра созвон в 11)
}adb bugreport: полный отчёт:
Когда непонятно, куда смотреть, снимают всё сразу. bugreport это архив с дампами всех сервисов, полным logcat, dmesg, ANR-трейсами и статистикой батареи:
Код: Выделить всё
$ adb bugreport bugreport-pixel8-2026-06-12.zip
/data/user_de/0/com.android.shell/files/bugreports/bugreport-...zip: 1 file pulled
Bug report copied to bugreport-pixel8-2026-06-12.zipКод: Выделить всё
adb shell bugreportz -pЧастые ошибки:
Первая по популярности, потерянный shell:
Код: Выделить всё
$ adb dumpsys battery
adb: unknown command dumpsysКод: Выделить всё
$ adb shell dumpsys batery
Can't find service: bateryКод: Выделить всё
$ adb shell dumpsys meminfo com.example.app
No process found for: com.example.appВ следующей главе мы возьмём cpuinfo, meminfo и их друзей в работу: будем мерить производительность в динамике, а не по разовым срезам.