今回はデバッグでよく使うコマンドその2のdumpsysについて紹介します。
dumpsysはシステムの状態を取得することが出来るコマンドです。
コマンドとしてはこんな感じ
$ adb shell dumpsys
特定の状態のみ取得したい場合はdumsysで各情報の上に表示されるコマンドを実行すると、その部分のみの情報を取得することが出来ます。
下記はWindowの情報のみを取得する際に使えるコマンドとなります。
dumpsysに出力される情報
WINDOW MANAGER WINDOWS (dumpsys window windows)
コマンド
$ adb shell window windows
dumpsysを使用するとwindowやactivityの情報等デバッグに使用する様々な情報を取得することが出来ます。
例えば、表示されているWindowのLayoutParamsにどのような設定が行われているか確認したい場合はdumpsys window windowsで情報を取得すると下記ようなの情報を見ることが出来ます。
========================================
Window #3 Window{b3f70f78 u0 Keyguard}:
mDisplayId=0 mSession=Session{b3fd20e0 750:u0a10007} mClient=android.os.BinderProxy@b3f9f8c8
mOwnerUid=10007 mShowToOwnerOnly=false package=com.android.keyguard appop=NON
mAttrs=WM.LayoutParams{(0,0)(fillxfill) sim=#10 ty=2004 fl=#c130900 pfl=0x8 fmt=-3 wanim=0x7f0d0003 or=2 vsysui=0xe00700 if=0x4 userActivityTimeout=10000}
========================================
上記のmAttrs部分がLayoutParamsになります。
出力されている情報はWindowManager.LayoutParamsのtoString()で文字列が作成されているので、androidのgitでソースを読んでみてください。
WindowManager.javaは下記を参照してください。
Android 4.2.2 WindowManager.java
私がよく見るのは最初の括弧二つとtyで、下記の情報を確認することが出来ます。
(x軸、y軸)(幅、高さ) ty=WindowType
上記のdumpsysの情報を読むと、このWindowは座標(0,0)に幅と高さがMATCH_PARENTで指定されたWindowTypeがTYPE_KEYGUARDのWindowであることがわかります。
他にも読み取れる情報は沢山あるので、調べてみるとデバッグの効率が上がる情報が見つかるかもしれません。