久し振りに、Xamarin.Android を作って、ツールを作ろうと思ったのですが、何故か
error: could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037: …
のようなエラーがでて、Visual Studio から Hyper-V の Android エミュレータに接続できなくなってしまいました。Android の axml を編集するために、Android SDK をアップデートしたのですが、どうやらタイミング的に Xamarin.Android 内の Android SDK と相性が悪い模様。正確には adb がうまく起動できないようです。
こんな風に、エミュレータにアップロードする時に固まってしまいます。
エミュレータへは adb を使って接続しているのですが、どうも adb devices を実行しても空で返って来ます。多分、AppData/Local のほうで使っていれば分離できているのだけど、/Program Files を示しているときは競合しているのかも。
C:/Program Files (x86)/Android/android-sdk/platform-tools に adb.exe があります。
多分、connect がうまくいっていないので、手動で接続してあげると、繋げるようになります。
Hyper-V のエミュレータで >> ボタンをクリックして「Network」のタブを開くと、エミュレータが使っている IP アドレスが分かります。
これを使って
adb connect 172.16.0.20
で起動させておくと、Visual Studio から Hyper-V のエミュレータへのデプロイができるようになります。
多分、Program Files 配下にあるから、パーミッション絡みで起動できなくなっているような気がするんだけど、どうなんだろう。コマンドが間違っているような気も。
おまけ
Visual Studio の新しいバージョンを Hyper-V 内で試しているんだけど、そこで Xamarin を動かして Android に接続するときに困っていたのですが、どうやら adb connect で繋げれば、Hyper-V 内の Visual Studio から別の Hyper-V で動いている Android エミュレータに接続できますね。これは結構便利。