2013年3月9日土曜日

[Windows8][Android] Can't bind to local 8600 for debugger

How to bind local 8600 on Winodws8
Windows8 64bitにAndroidアプリの開発環境を導入したらエミュレーターでアプリを実行できなくなってしまいました。

バージョンの異なる数種類のEclipseで試しましたが、全て同じ症状です。
最終的に動作した環境は次の通りです。
・eclipse-java-juno-SR1-win32
・android-sdk_r21-windows
※pleadesの日本語化プラグインを導入しているため、他の環境と表示メッセージが異なる場合があります。

エミュレーターを起動するとコンソールにこのようなエラーメッセージが表示されます。
「デバイス」ビューは赤いアイコンが表示されます。
このまま実行するとコンソールに赤い時でエラーメッセージが表示され、アプリを実行できません。
日本語化した場合のメッセージ
起動エラー: リモート VM に接続できませんでした。接続は拒否されました。
英語のメッセージ
Launch error: Failed to connect to remote VM. Connection refused.

結論
Windows XPの互換モードでeclipseを起動するように設定をしたらエラーが出なくなりました。
ecilpse.exeを右クリックして、プロパティー - 互換性 で設定できます。

原因が分からないので、なぜ互換モードでなければ動作しないのか不明です。
気になるのはWindows8ネイティブと互換モードでTCPのポートの範囲が異なることです。

エラーが起きるWindow8ネイティブの場合
正常に動作する互換モードの場合
正常に動作するWwindows7の場合
エラーが起こるWindows8では 62252 という大きい数値のポートを使うのに対し、正常に動作する互換モードでは 4739 という小さな数値のポートを使っています。
Windows7も大きい数値ですが 49310 です。
60000を超えるポートを使っていることが個人的に気になっただけで、因果関係は不明です。

以下、試してみたけど解決しなかった操作
・C:\Windows\System32\Drivers\etc\hosts ファイルに「127.0.0.1 localhost」を定義する
・IPv6を無効にする
・Eclipse の 設定 - Android - DDMS USE ADBHOST に「127.0.0.1」を設定する
・Eclipse の 設定 - Android - DDMS USE ADBHOST にベース・ローカル・デバッガーポートの数値を色々変えてみる
・Windowsファイアーフォールやセキュリティー保護ソフトを無効にする
・eclipseやAndroid SDKをインストールし直す。
・C:\Users\(ユーザー名)\.android フォルダーを削除する
・TCP関係のレジストリー設定「MaxUserPort」を定義する。

以上、参考になれば幸いです。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。