adb shell am コマンド

adbから起動できるshellコマンドにはインテントを機器(エミュレータ)に送るコマンドがある。

    • amコマンドの例
adb shell am start -n org.kazzz.android/.HogeActivity

これでパッケージ"org.kazzz.android"に定義されている"HogeActivity"を起動することができる。

Androidのインテントは起動済みのアプリケーションに送ることもできるので、デバッグセッションを予め開始しておいてそこに明示的なインテントを投げることで、まるでデバッグセッションにアタッチするかのように、起動済みのアプリケーションに属しているActivityを起動しデバッグトレースをすることも普通にできる。

例えばActivity3枚構成の最後の画面として設定されているActivityを単独で起動してブレークポイントで止める、なんてこともできるので超絶便利だ。(エミュレータの起動やデバッグはどんなプロセッサを使っても重いからね)

このコマンド、恥ずかしながらごく最近まで知らなかったのだ。
adb shellコマンドのリファレンスってドキュメント化されているのだろうか。