こんばんは、hirokumaと申します。
最近、adb.exeがうまく動かないことがあり、困っていました。
> adb kill-server
> adb start-server
としても、start-serverがエラーになります。
「ADB server didn't ACK」などと言われるのです。
環境変数のADB_TRACEにallなどとしておくと、adbのトレースログが出てくるのですが、ポート5037番にbindできないとおっしゃる。
Created device thread
transport: client_socket_thread() starting
cannot bind 'tcp:5037'
ファイアウォールソフトなどが影響している、というような情報があったけれども、ではどうすればいいのかが未だによくわかりません。
ここまでは前置き。
ADB_TRACEでもう少しログを出したいので、adb.exeを自分でビルドできないのか?というのを調べていました。
どうやら、SDKのビルドでできるようです。
手順としては、
1. MacやLinuxでSDKをビルド
2. できたバイナリ(zip?)をcygwinで変換
というものらしいです。
ここで注意が!
「cygwinは、1.5ではないとだめ」と書かれています。リンク先のL.44くらいに記載があります。
うちのPCはcygwin1.7にしているので、あきらめました。
adb.exeだけならcygwinだけでもビルドできそうな気がしますが、どうなんでしょうね。
直接的な解決策ではないですが、adbでデバイスの接続に失敗するときは、
返信削除・eclipseが起動している時は終了させる
(eclipseのAndroidプラグイン側でもadbの接続を勝手に行ってたりするので)
・タスクマネージャでadb.exeのプロセスを全てkillしてみる
あたりで改善することがありますよ。
こんばんは。
返信削除どうもですね、この現象だけはそれらとは違うようなのです(私も体験するまでは、どこかで生きてるんじゃないの、と思ってました)。
netstatで見るとCLOSE_WAITのままとなっていて、adbっぽい人が誰もいないのでどうしようもない、というところです。
感触だけで言うと、スレッドの終了同期がうまくいっていないような気がしています。
さらに何となくな話をすると、firewallソフトの影響が強いような気がしているのですが、まだ確認に至ってません。
firewallソフトを別のものにすると、症状が出なくなりました。
返信削除CLOSE_WAITについては、Windows VISTA以降ではどうのこうの、という記事もあったので、最近だと大丈夫なのかもしれません。