Chomado's Blog
You Are Reading

Dump Activity Stack 【Android ADB Shell dumpsys】

0
プログラミング

Dump Activity Stack 【Android ADB Shell dumpsys】


Android アプリを開発していて, 現在の Activity の Stack の状態を確認したいときにどうするかをメモしました.
今回は (いつもの Mac ではなく) Windows で作業しています.

What is “ADB” ?

ADB ( Android Debug Bridge ) は, Google の Android SDK に含まれているコマンドラインユーティリティです. ADB は USB接続された実機を コンピュータからコントロールでき, ファイルをコピーしたり アプリを[アン]インストールできたり, shellコマンドを走らせたり いろんな事ができます.
Xamarin から Android アプリをビルドしたときも, 裏側で ADB を用いてデバイスに接続しています

To test whether ADB is working properly

現在利用可能なデバイス (エミュレータや実機) の一覧を確認するコマンドです.

> adb devices

これを叩くと List of devices attached が表示されます

> adb devices

List of devices attached
0123456789ABCDE device

ここで offline と表示されてしまったら, うまくいっていないので, やり直しましょう

What’s the ADB shell “dumpsys” tool ?

dumpsys コマンドは システムサービスの状態をダンプしてくれます.

> adb shell dumpsys

で 様々な情報が得られるのですが, あまりに情報量が多過ぎる (実行すると ダーって止まらなくなる)

(参考: android / platform/frameworks/native / master / . / cmds / dumpsys / dumpsys.cpp )

ので, grep (Windows だと find) します.

> adb shell dumpsys | find "DUMP OF SERVICE"

DUMP OF SERVICE DeviceManager3LM:
DUMP OF SERVICE OemExtendedApi3LM:
DUMP OF SERVICE SurfaceFlinger:
DUMP OF SERVICE accessibility:
DUMP OF SERVICE account:
DUMP OF SERVICE activity:
(中略)
DUMP OF SERVICE battery:

(以下略. 全部で95個あった)

これら95個のサービスが dumpsys で扱えるよ, ということです.

たとえば, バッテリーの状態が知りたかったら以下のように叩きます


> adb shell dumpsys battery

Current Battery Service state:
  AC powered: false
  USB powered: true
  Wireless powered: false
  status: 2
  health: 2
  present: true
  level: 98
  scale: 100
  voltage: 4323
  current now: 244620
  temperature: 321
  technology: Li-ion

使い方の例

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

To dump Activity stack

現在の Activity のスタックの状態を確認するには,

> adb shell dump sys activity

で, いけます.

ただ, これだとあまりに情報量が多いので, またよしなに grep して叩きます.

まず, Android機を起動してすぐのホーム画面で叩いた時

> adb shell dumpsys activity | find  “Run #“
    Run #0: ActivityRecord{34163328 u0 com.sonyericsson.home/com.sonymobile.home.HomeActivity t2}

まだ Activity stack は1つだけですね

次にTwitterアプリを開きました.
// 私は訓練されたツイ廃なので, スマホを開いたら常にTwitterを開く癖がついています.

> adb shell dumpsys activity | find  “Run #“
    Run #0: ActivityRecord{34163328 u0 com.sonyericsson.home/com.sonymobile.home.HomeActivity t2}
    Run #0: ActivityRecord{34ffd220 u0 com.twitter.android/.MainActivity t111}

ひとつ増えましたね.
com.twitter.android/.MainActivity というActivityです

そのまま, Twitterアプリのなかで, TLからひとつツイートを選んで 詳細を表示させます.

> adb shell dumpsys activity | find  “Run #“
    Run #0: ActivityRecord{34163328 u0 com.sonyericsson.home/com.sonymobile.home.HomeActivity t2}
    Run #1: ActivityRecord{340f1230 u0 com.twitter.android/.RootTweetActivity t111}
    Run #0: ActivityRecord{34ffd220 u0 com.twitter.android/.MainActivity t111}

MainActivity の上に RootTweetActivity という Activity がひとつ増えました.
あと Run# の番号もひとつ増えました.

OSのシステムのActivity(なのかな?)の com.sonyericsson.home/com.sonymobile.home.HomeActivity は, つねに一番上にあるんですね.

次に, その開いたツイートにはリンクがついていたので, リンクを開きます.

> adb shell dumpsys activity | find  “Run #“
    Run #0: ActivityRecord{34163328 u0 com.sonyericsson.home/com.sonymobile.home.HomeActivity t2}
    Run #2: ActivityRecord{3410ecf0 u0 com.twitter.android/.browser.BrowserActivity t111}
    Run #1: ActivityRecord{340f1230 u0 com.twitter.android/.RootTweetActivity t111}
    Run #0: ActivityRecord{34ffd220 u0 com.twitter.android/.MainActivity t111}

browser.BrowserActivity がひとつ増えました.

こんなふうに, Activity の Stack の状態を確認できるんですね

> adb shell dumpsys activity | find  “Run #“
    Run #0: ActivityRecord{34163328 u0 com.sonyericsson.home/com.sonymobile.home.HomeActivity t2}

> adb shell dumpsys activity | find  “Run #“
    Run #0: ActivityRecord{34163328 u0 com.sonyericsson.home/com.sonymobile.home.HomeActivity t2}
    Run #0: ActivityRecord{34ffd220 u0 com.twitter.android/.MainActivity t111}

> adb shell dumpsys activity | find  “Run #“
    Run #0: ActivityRecord{34163328 u0 com.sonyericsson.home/com.sonymobile.home.HomeActivity t2}
    Run #1: ActivityRecord{340f1230 u0 com.twitter.android/.RootTweetActivity t111}
    Run #0: ActivityRecord{34ffd220 u0 com.twitter.android/.MainActivity t111}

> adb shell dumpsys activity | find  “Run #“
    Run #0: ActivityRecord{34163328 u0 com.sonyericsson.home/com.sonymobile.home.HomeActivity t2}
    Run #2: ActivityRecord{3410ecf0 u0 com.twitter.android/.browser.BrowserActivity t111}
    Run #1: ActivityRecord{340f1230 u0 com.twitter.android/.RootTweetActivity t111}
    Run #0: ActivityRecord{34ffd220 u0 com.twitter.android/.MainActivity t111}

> adb shell dumpsys activity | find  “Run #“
    Run #0: ActivityRecord{34163328 u0 com.sonyericsson.home/com.sonymobile.home.HomeActivity t2}
    Run #2: ActivityRecord{3410ecf0 u0 com.twitter.android/.browser.BrowserActivity t111}
    Run #1: ActivityRecord{340f1230 u0 com.twitter.android/.RootTweetActivity t111}
    Run #0: ActivityRecord{34ffd220 u0 com.twitter.android/.MainActivity t111}

> adb shell dumpsys activity | find  “Run #“
    Run #0: ActivityRecord{34163328 u0 com.sonyericsson.home/com.sonymobile.home.HomeActivity t2}
    Run #3: ActivityRecord{4640d310 u0 android/com.android.internal.app.ChooserActivity t111}
    Run #2: ActivityRecord{3410ecf0 u0 com.twitter.android/.browser.BrowserActivity t111}
    Run #1: ActivityRecord{340f1230 u0 com.twitter.android/.RootTweetActivity t111}
    Run #0: ActivityRecord{34ffd220 u0 com.twitter.android/.MainActivity t111}

Madoka Chomado (ちょまど)

千代田まどかです。よく「ちょまど」と呼ばれます。Microsoft 社員。文系出身プログラマ兼マンガ家です。

(1) Comment

  1. ばどりん says:

    ( ゚ε゚;)むむむずかしい( ̄▽ ̄;)

ばどりん へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です