Android SDK をアップデートしたら Hyper-V のエミュレータに接続できなくなったとき

久し振りに、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 がうまく起動できないようです。

こんな風に、エミュレータにアップロードする時に固まってしまいます。

image

 

エミュレータへは adb を使って接続しているのですが、どうも adb devices を実行しても空で返って来ます。多分、AppData/Local のほうで使っていれば分離できているのだけど、/Program Files を示しているときは競合しているのかも。

image

C:/Program Files (x86)/Android/android-sdk/platform-tools に adb.exe があります。

image

多分、connect がうまくいっていないので、手動で接続してあげると、繋げるようになります。

Hyper-V のエミュレータで >> ボタンをクリックして「Network」のタブを開くと、エミュレータが使っている IP アドレスが分かります。

image

これを使って

adb connect 172.16.0.20

で起動させておくと、Visual Studio から Hyper-V のエミュレータへのデプロイができるようになります。

image

多分、Program Files 配下にあるから、パーミッション絡みで起動できなくなっているような気がするんだけど、どうなんだろう。コマンドが間違っているような気も。

おまけ

Visual Studio の新しいバージョンを Hyper-V 内で試しているんだけど、そこで Xamarin を動かして Android に接続するときに困っていたのですが、どうやら adb connect で繋げれば、Hyper-V 内の Visual Studio から別の Hyper-V で動いている Android エミュレータに接続できますね。これは結構便利。

カテゴリー: Xamarin, トラブルシューティング パーマリンク