初稿2010/7
はじめに
adbはserverとclientのversionが食い違っていると、
"adb server is out of date. killing..."を出力して、serverを再起動してしまいます。
同一LAN上に複数のターゲットと1台の共有Linuxサーバがぶら下がっていてみんなで開発したりする場合、共有linuxサーバ上でみんなが起動するadb-clientのversionを合わせるように気をつける必要があります。
このような場合、adbは以下のプロセス構成で動いていて、serverはadb-client起動時に(既に起動していなければ)自動的に起動されます。
[ターゲット] [共有linuxサーバ] [共有linuxサーバ]
adb-daemon1 -----------¥ /----------- adb-client1
adb-daemon2 --------------- adb-server -------------- adb-client2
adb-daemon3 -----------/ ¥----------- adb-client3
この対策は単純に(各々localにインストールしたadbではなく)全員が同じadb (例えば/usr/local/toolsにインストールしたadb)を使うように強制すればOKです。
共有linuxサーバからみんなで使うには
- ターゲットにselialコンソールで接続してIPアドレスを設定する
速度:115200
- 実機のIPアドレス設定
# ifconfig eth0 10.61.1.x netmask 255.255.0.0
- 確認
# ifconfig eth0
eth0: ip 10.61.1.x mask 255.255.0.0 flags [up broadcast running multicast]
# netstat
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:5037 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5555 0.0.0.0:* LISTEN
-
共有linuxサーバからターゲットに接続する
-
【準備】共有linuxサーバにログインし、.cshrcにpathを追加する
$ vi ~/.cshrc
set path = (. /usr/bin /bin /etc /usr/etc /usr/local/bin /usr/local/tools)
上記のようにpath設定に「/usr/local/tools」を追加
$ source ~/.cshrc
- 確認
$ which adb
/usr/local/tools/adb
$ adb version
Android Debug Bridge version 1.0.26
- adb-serverにターゲットへの接続情報を登録
$ adb connect 10.61.1.x:5555 <--5555はselialコンソールから、netstatで確認したport-no
connected to 10.61.1.x:5555
- 接続情報の確認
$ adb devices
"List of devices attached"
"10.61.1.11:5555 device"
"10.61.1.x:5555 device" <--- "10.61.1.x:5555"がシリアルNo
"10.61.1.6:5555 device"
- 自分のシリアルNoを指定してloginする
$ adb -s 10.61.1.x:5555 shell
** シリアルNoは環境変数"ANDROID_SERIAL"に設定して使うのが楽かも
$ setenv ANDROID_SERIAL 10.61.1.x:5555
$ adb shell
参考
adbのマニュアル http://www.muo.jp/android16/?developing/tools/adb.html