実機でHierarchy Viewerを使う

SDK標準のツール、Hierarchy Viewer
Viewの階層構造を図として表示してくれる優れもの

ただ、rootedな端末かエミュレータでないと動作しないとのこと。
実機でないと不便な場合もあるので、実機での動作については、ViewServerをソースコードに組み込むことで動作するようになります。

以下のURLで紹介されています。
http://yuyakaido.hatenablog.com/entry/2014/02/19/184607
http://qiita.com/gfx/items/4e3caba69b876ea27ac5

https://github.com/romainguy/ViewServer
ここからViewServerのソースコードを取ってきます。

展開したViewServer.javaを自分のプロジェクトに組み込みます。

Activityのソースコードの
onCreate()
ViewServer.get(this).addWindow(this);を追加

onDestory()
ViewServer.get(this).removeWindow(this);を追加

onResume()
ViewServer.get(this).setFocusedWindow(this);を追加


実機で対象のアプリを実行しておいて
コマンドプロンプトで%SDKインストールディレクトリ%\tools\hierarchyviewer.batを起動します。

こんな感じでデバイス名とアプリ名が表示されます。
アプリをダブルクリックします。

画像


アプリのViewの階層が表示されます。

画像


ViewをクリックするとリアルタイムでそのViewに表示している内容が表示されます。
画像


便利で良いのですが、若干不安定です。
Viewの状態とか見て色々いじってると落ちます。
11:08:05 E/hierarchyviewer: null
11:08:05 E/HierarchyViewer: shutting down due to uncaught exception
11:08:05 E/HierarchyViewer: null
java.lang.NullPointerException
at com.android.hierarchyviewerlib.HierarchyViewerDirector.loadCapture(Hi
erarchyViewerDirector.java:400)
at com.android.hierarchyviewerlib.HierarchyViewerDirector$11.run(HierarchyViewerDirector.java:385)
at com.android.hierarchyviewer.HierarchyViewerApplicationDirector$1.run(HierarchyViewerApplicationDirector.java:81)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)

落ちたあとは
\hierarchyviewer.bat
The standalone version of hieararchyviewer is deprecated.
Please use Android Device Monitor (tools/monitor.bat) instead.
となって起動が出来ません。
PCを再起動して最初からやり直すとうまくいきます。

Unable to get view server version from device
と表示される場合は、他にEclipseやAndroidStudioが起動しているからだと思います。
以下URL参照
http://qiita.com/ymotongpoo/items/a1dc5417976b6e8ccb3f

Viewの階層をPNG形式に保存できるのでそちらで全体構造を把握して、必要に応じてHierarchyViewerを起動するのがよさそうです。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック