attachでけた。

昨日の続き。


emulatorでemulator起動するとこまで。

どうもドキュメントが古いらしくて、なかなか上手いこといかん。
LinuxLinuxでどのディストリどのバージョンかで細かい動作が違うみたいだし。

で、色々やった結論だけど、


昨日の翻訳どおりにEclipseAndroidのプラットフォームごとぶっこむ。
ターミナルから

. build/envsetup.sh
emulator

エミュレータ起動。このとき、英文にはddmsを起動しろ〜とかあったけど必要ない。
むしろEclipseにADTのプラグインを入れてるとEclipse上に既にddms組み込まれてるので無駄っぽい。

起動させたら、Run->Debug Configulations...というのをメニューから選択。
"Remoto Java Application"を選択する。Press New button...と説明ある横のアイコンと同じ物をクリックして新しいコンフィグを作成する。Nameをお好きに。hostはlocalhostのままで。Portは8700番に変更する。

右下のDebugボタンを押すとAttachできる。


なんだか、コツがいるようで、
ここを参考にするかぎり、うまくいかなかったら、emulatorを終了させて、adbというプロセスが残っているのでこれもしばき倒してやり直すといいみたい。
adbしばき倒してもダメなこともあって、そういうときは、しばらく待ってやり直すとつながったりする。


なにこのファジー*1な感じ。


成功したら、Debugパースペクティブに切り替えると、スレッドがぞろぞろ表示されてるのでそれを目安に。

ちなみに

この方法、実機のアプリをデバッグするときにも当然使えるようで、覚えておいて損の無いテクニックな模様だ。
しかしすごいな。これ。Eclipseがすごいのか、JavaがすごいのかAndroidがすごいのか。Java開発者じゃないのでわからん。

VMから上を好き放題にデバッグできるのはすごいぞ。

もひとつおまけ。

emulatorとddmsがあればEclipseなんて軟弱なものなどいらん。
という人は、

cd /path/to/android/root
. build/envsetup.sh
lunch 1
development/tools/eclipse/scripts/create_ddms_symlinks.sh
ddms

でddms単体で起動できる。ddmsはプロジェクトの依存関係がひどいらしく、ビルドできる環境作るのが面倒そうなのでこれがお手軽。

情報源はここ

追記。

attachはDDMSで目的のプロセスを選択してから、Debugメニューを選択すると必ず成功するっぽい。


だけど、マルチプロセスでがんがん動いているので、アプリのデバッグじゃない場合は、すぐにプロセス同士の同期が異常になってしまってうまく動かなくなってしまう。地道にログを追ってデバッグしていくしかないか。
意外に、奥深いな、Android

*1:死語