adb shell dumpsys 命令用法

adb shell dumpsys 命令用法

出發點一

Android 引入了「任務棧」的概念,這個概念對於 Android 設備上的返回按鍵有極其重要的聯繫。有時候按下返回按鈕或者點擊關閉當前 Activity 的操作,都不知道 Android 系統會把程序帶到哪個 Activity ,不確定這是否是最後一個 Activity 以致退出了整個程序。亦或者一些按鈕和操作循環產生 Activity 而造成內存膨脹。對於這些問題,如果能夠在調試期間知道當前任務棧的情況,就能很方便的觀察和發現問題存在的原因,進而選擇正確的 launchMode ,設置且當 Intent 的 Flag 來使程序達到預期的效果。

出發點二

手機裏裝着一個應用,在不反編譯也不做其他處理的情況下,你可以對這個應用瞭解多少。

出發點三 「出自官方文檔

dumpsys is a tool that runs on Android devices and provides information about system services. You can call dumpsys from the command line using the Android Debug Bridge (ADB)to get diagnostic output for all system services running on a connected device. This output is typically more verbose than you may want, so use the command line options described below to get output for only the system services you’re interested in. This page also describes how to use dumpsys to accomplish common tasks, such as inspecting input, RAM, battery, or network diagnostics.

命令格式

adb shell dumpsys activity [options][WHAT]
  • option參數

    option 含義
    -a 包括所有可用的Service狀態
    -c 包括 Client 狀態,即 App 端情況
    -p PACKAGE 限定輸出指定包名
  • WHAT參數
    在這裏插入圖片描述

練習

  • 輸入

    adb shell dumpsys activity 
    
  • 輸出

    ACTIVITY MANAGER PENDING INTENTS (dumpsys activity intents)   //注意
       * PendingIntentRecord{1be2c1c com.coloros.gallery3d broadcastIntent}
      ...
    ACTIVITY MANAGER BROADCAST STATE (dumpsys activity broadcasts)
       Historical broadcasts [foreground]:
        ...
    ACTIVITY MANAGER CONTENT PROVIDERS (dumpsys activity providers)//注意
       Published single-user content providers (by class):
        ...
    ACTIVITY MANAGER URI PERMISSIONS (dumpsys activity permissions) //注意
       Granted Uri Permissions:
       ...
    ACTIVITY MANAGER SERVICES (dumpsys activity services) //注意
      User 0 active services:
      ...
    ACTIVITY MANAGER RECENT TASKS (dumpsys activity recents)//注意
      Recent tasks:
      ...
    ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities) //注意
      Display #0 (activities from top to bottom):
      ...
    ACTIVITY MANAGER RUNNING PROCESSES (dumpsys activity processes)//注意
    

    上面標註 [注意] 的地方其實是提示可以用括號內的命令來獲取對應的內容,所以[adb shell dumpsys activity]命令等價於下面8條命令:

    adb shell dumpsys activity intents    //輸出 PendingIntentRecord
    adb shell dumpsys activity broadcasts //輸出歷史廣播(foreground、background、Sticky)
    adb shell dumpsys activity providers  //主要輸出內容提供者providers
    adb shell dumpsys activity permissions//主要輸出授予的權限Uri
    adb shell dumpsys activity services   //主要輸出服務service
    adb shell dumpsys activity recents    //主要輸出最近任務棧Recent tasks
    adb shell dumpsys activity activities //主要輸出activity堆棧信息
    adb shell dumpsys activity processes  //主要輸出獨立的進程列表
    
  • 輸入

    adb shell dumpsys activity top
    
  • 輸出

    TASK com.jianshu.haruki id=101
      ACTIVITY com.jianshu.haruki/com.baiji.jianshu.MainActivity fb571c1 pid=21291
    // ... 只舉出了前兩行,省略了 N 行代碼
    

    獲取當前 Android 系統中與用戶交互的 Activity 的詳細信息,根據輸出可得到簡書的應用包名是:「com.jianshu .haruki」

  • 輸入

    adb shell dumpsys activity activities
    
  • 輸出

    顯示當前所有在運行的任務棧,它們的 id 分別是什麼。對於每個 Task 也有 Activity 數量等信息,同時也列出了其中的 Activity 列表,並且對於每個 Activity 也有比較詳細的描述,比如啓動它的 Intent 的內容。如果覺得內容過多,只想看看棧的內容,也可以直接跳到「Running activities (most recent first) 那部分,比較簡潔而又明瞭的列出了棧中的 Activity 列表,就能知道當按下返回鍵的時候會應該回到哪個 Activity 」
    
  • 輸入

    adb shell dumpsys package com.jianshu.haruki //此處寫的是『簡書』的應用包名
    
  • 輸出

    versionCode=1 minSdk=19 targetSdk=29
    versionName=1.0
    requested permissions:
    	...
    install permissions:
    	...
    runtime permissions:
    	...               
    
  • 輸入

    adb shell dumpsys meminfo com.jianshu.haruki  //此處寫的是『簡書』的應用包名
    
  • 輸出

    Applications Memory Usage (kB):
    Uptime: 94384953 Realtime: 367426401
    
    ** MEMINFO in pid 21291 [com.jianshu.haruki] **
                       Pss  Private  Private  Swapped     Heap     Heap     Heap
                     Total    Dirty    Clean    Dirty     Size    Alloc     Free
                    ------   ------   ------   ------   ------   ------   ------
      Native Heap    20236    19432        0     1180    50580    48838     1741
      Dalvik Heap    12299    12264        0       56    52530    45197     7333
     Dalvik Other    23104    23064        0     9680                           
            Stack     1484     1484        0        0                           
           Ashmem      134      128        0        0                           
          Gfx dev    14698    14596        0        0                           
        Other dev       10        0        8        0                           
         .so mmap     5924      252     4312     2908                           
        .apk mmap    27189      144    26692        0                           
        .ttf mmap      130        0      104        0                           
        .dex mmap    12242       12    11060        0                           
        .oat mmap     3661        0     1256        4                           
        .art mmap     2450     1940       92      144                           
       Other mmap     1300       12     1280        0                           
       EGL mtrack    41280    41280        0        0                           
          Unknown     6052     6044        0       84                           
            TOTAL   172193   120652    44804    14056   103110    94035     9074
     
     App Summary
                           Pss(KB)
                            ------
               Java Heap:    14296
             Native Heap:    19432
                    Code:    43832
                   Stack:     1484
                Graphics:    55876
           Private Other:    30536
                  System:     6737
     
                   TOTAL:   172193      TOTAL SWAP (KB):    14056
     
     Objects
                   Views:      837         ViewRootImpl:        1
             AppContexts:        2           Activities:        1
                  Assets:        4        AssetManagers:        2
           Local Binders:       31        Proxy Binders:       31
           Parcel memory:       23         Parcel count:       92
        Death Recipients:        1      OpenSSL Sockets:        2
     
     SQL
             MEMORY_USED:     1054
      PAGECACHE_OVERFLOW:      297          MALLOC_SIZE:       62
     
     DATABASES
          pgsz     dbsz   Lookaside(b)          cache  Dbname
             4       24             36       112/19/5  /data/user/0/com.jianshu.haruki/databases/com.jianshu.haruki
             4       76            176      116/64/25  /data/user/0/com.jianshu.haruki/databases/google_app_measurement.db
             4       40             33         6/21/5  /data/user/0/com.jianshu.haruki/databases/tencent_analysis.db
             4       32             98       75/26/12  /data/user/0/com.jianshu.haruki/databases/bugly_db_
             4       40             19         4/19/3  /data/user/0/com.jianshu.haruki/databases/pri_tencent_analysis.db
             4       20             34         3/18/4  /data/user/0/com.jianshu.haruki/databases/ThrowalbeLog.db
             4       20             32       786/19/5  /data/user/0/com.jianshu.haruki/databases/sharesdk.db
             4      124             57       45/24/10  /data/user/0/com.jianshu.haruki/databases/jian_shu.db
    

總結

command description
adb shell dumpsys activity 獲取當前 Android 系統 Activity 棧中 Activity 信息
adb shell dumpsys activity top 獲取當前 Android 系統 中與用戶交互的 Activity 的詳細信息
adb shell dumpsys meminfo [應用包名] 查看應用的內存使用情況
adb shell dumpsys package [應用包名] 獲取手機裏面某個 apk 的應用信息、版本信息
adb shell dumpsys activity activities 顯示當前所有在運行的任務棧,並可查看棧中所有的 Activity 的列表

擴展

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章