Qu'est-ce que l'outil "dumpsys" du shell ADB d'Android et quels sont ses avantages?

140

Je recherche la liste complète des dumpsyscommandes shell ADB avec une explication complète de toutes les commandes.

Où puis-je trouver ces informations?

Vishwanath.M
la source

Réponses:

247

Qu'est-ce que Dumpsys et quels sont ses avantages

dumpsys est un outil Android qui s'exécute sur l'appareil et dépose des informations intéressantes sur l'état des services système.

Avantages évidents:

  1. Possibilité d'obtenir facilement des informations système dans une simple représentation sous forme de chaîne.
  2. Possibilité d'utiliser du CPU, de la RAM, de la batterie, des statistiques de stockage pour un joli graphique, ce qui vous permettra de vérifier comment votre application affecte l'ensemble du périphérique!

Quelles informations pouvons-nous récupérer à partir de la commande shell dumpsys et comment nous pouvons les utiliser

Si vous exécutez dumpsys, vous verrez une tonne d'informations système. Mais vous ne pouvez utiliser que des parties séparées de ce gros dump.

pour voir toutes les "sous-commandes" de dumpsys faites:

dumpsys | grep "DUMP OF SERVICE"

Production:

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:

Quelques exemples de vidage et sortie

1) Obtenir toutes les statistiques de batterie possibles:

$~ adb shell dumpsys battery

Vous obtiendrez la sortie:

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) Obtenir des informations wifi

~$ adb shell dumpsys wifi

Production:

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) Obtenir des informations sur le processeur

~$ adb shell dumpsys cpuinfo

Production:

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) Obtenir des informations sur l'utilisation de la mémoire

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

Production:

** 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

Si vous voulez voir les informations de tous les processus, utilisez ~$ adb shell dumpsys meminfo

entrez la description de l'image ici

dumpsys est finalement un outil flexible et utile!

Si vous souhaitez utiliser cet outil, n'oubliez pas d'ajouter automatiquement l'autorisation dans votre manifeste Android android.permission.DUMP

Essayez de tester toutes les commandes pour en savoir plus sur les dumpsys. Bon dumping!

K_Anas
la source
5
Est-ce un document quelque part ou simplement votre propre expérimentation?
brianestey
10
Aussi très bien est: adb shell dumpsys activités diffusées, montre toutes les diffusions
joecks
en commençant par Kitkat (je pense), "batteryinfo" a été remplacé par "batteryystats", et sa sortie et son utilisation semblent également différentes.
développeur android
1
dumpsys est incroyablement puissant. Il rapporte les valeurs privées des services Android de base que vous ne pourrez généralement pas obtenir.
Kevin Mark
1
malheureusement, il nécessite une autorisation de niveau racine ou système pour être utilisé dans le programme java.
umesh le
60

En regardant le code source des dumpsys et du service , vous pouvez obtenir la liste des services disponibles en exécutant ce qui suit:

adb shell service -l

Vous pouvez ensuite fournir le nom du service qui vous intéresse aux dumpsys pour obtenir les informations spécifiques. Par exemple (notez que tous les services ne fournissent pas d'informations de vidage):

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

Comme vous pouvez le voir dans le code (et dans la réponse de K_Anas), si vous appelez dumpsys sans aucun nom de service, il videra les informations sur tous les services dans un gros vidage:

adb shell dumpsys

Certains services peuvent recevoir des arguments supplémentaires sur ce qu'il faut montrer, ce qui est normalement expliqué si vous avez fourni un -hargument, par exemple:

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
Joe
la source
13

Selon les informations Android officielles sur les dumpsys :

L' outil dumpsys s'exécute sur le périphérique et fournit des informations sur l'état des services système.

Pour obtenir une liste des services disponibles, utilisez

adb shell dumpsys -l
lujop
la source
1
Je ne vois pas pourquoi cela a été refusé - c'est un lien utile. La liste des services disponibles -lfonctionne sur ma Lollipop mais pas sur mon Jelly Bean.
starfry
1
Cette réponse a un pointeur réel vers la documentation réelle. Je crois que c'est ce que l'OP recherchait
Robert R Evans
Elle a probablement été rejetée car il n'y a pas de nouvelle information par rapport à la réponse donnée trois ans auparavant.
topher217
0

i utiliser dumpsys pour attraper si l' application est écrasé et le processus est toujours actif. La situation dans laquelle je l'ai utilisé est de savoir si l'application de la machine à distance est plantée ou non.

dumpsys | grep myapp | grep "Application Error" 

ou

adb shell dumpsys | grep myapp | grep Error

ou tout ce qui aide ... etc

si l'application ne fonctionne pas, vous n'obtiendrez rien en conséquence. Lorsque l'application est arrêtée, le message est affiché à l'écran par Android, le processus est toujours actif et si vous vérifiez via la commande " ps " ou autre chose, vous verrez que l'état du processus n'affiche aucune erreur ou signification de crash. Mais lorsque vous cliquez sur le bouton pour fermer le message, le processus de l'application sera nettoyé de la liste des processus. il est donc difficile de trouver un état de plantage sans aucun code dans l'application. mais dumpsys vous aide.

Moteur OZTURK
la source