[Q] adb serverのリスニングアドレスを指定する方法はありますか?

306 views
Skip to first unread message

hfuj

unread,
Dec 15, 2016, 3:58:50 AM12/15/16
to 日本Androidの会
皆様初めまして。藤本英紀と申します。

標題のとおり adb server の待ち受けアドレスの指定方法を知りたいと思っております。

使用しているSDKは android-sdk_r24.4.1-linux.tar.gz
  
通常、下記を行うと 127.0.0.1:5037 で adb server が待ち受けていると思います。
  $ adb start-server

これをホストマシンの全ネットワークインターフェース、
あるいは指定したネットワークインタフェースで待ち受けることはできますでしょうか?

行いことは次の[3.]です。 
1. 今、ホストマシン(192.168.0.1)がありそこで Androidエミュレータが動いています。
2. そのエミュレータ内側で動くサーバプログラムがあります。それは 0.0.0.0:10000 で待ち受けているとします。
2. ホストマシンから次の操作でそのサーバプログラムに接続することができます。 
    $ adb foward tcp:10000 tcp:10000
    $ telnet 127.0.0.1 10000
3. そのサーバプログラムに別マシン(192.168.0.3)から同じ様に接続したいのです。
    $ telnet 192.168.0.1 10000


「$ adb -a start-server」ではダメでした。
またホストはLinxuマシンなので iptables で 127.0.0.1 に転送しようとしましたが、知識不足のためかうまくいきませんでした。

何らかの手段をご存じの方いましたらご教示いただければと思います。

--
藤本英紀(フジモトヒデキ)

M.Yamakarasu

unread,
Dec 18, 2016, 1:04:54 AM12/18/16
to android-g...@googlegroups.com
こんにちわです。からすと申します。

試したことはないので、うまくいくかはわからないですが、
ホスト側adbサーバをlinuxで動かしているのであれば、
OpenSSH(gオプションが必要?)でポートフォワードして
あげると接続できたりしませんでしょうか?

adbはループバックデバイスを開いていたかと思いますので、
Host PCの外側からはアクセスできないので、sshで内側から
アクセスする感じです。

--
からす at いばらき



2016年12月15日 17:08 hfuj <hfu...@gmail.com>:

--
このメールは Google グループのグループ「日本Androidの会」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには android-group-japan+unsub...@googlegroups.com にメールを送信してください。
このグループに投稿するには android-group-japan@googlegroups.com にメールを送信してください。
https://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

hfuj13

unread,
Dec 21, 2016, 11:57:44 PM12/21/16
to 日本Androidの会
To: からすさん

藤本です。ご返信が遅れまして申しわけありません。

アドバイスいただいた sshのポートフォワードで対応できました。
ありがとうございました。m(_ _)m


2016年12月18日日曜日 15時04分54秒 UTC+9 karasu:
このグループに投稿するには android-g...@googlegroups.com にメールを送信してください。
Message has been deleted

hfuj13

unread,
Jan 4, 2017, 3:23:49 AM1/4/17
to 日本Androidの会
追加情報

adb server起動時に -a オプションをつけると全インターフェースでlistenするようですが、これはdaemon起動では使うことができないようです。
daemon起動しなくてよいなら次のコマンドで全インターフェースで待ち受けることができます。

adb -a nodaemon server

daemon起動で全インターフェースlistenするなら adbのリビルドが必要そうです。
system/core/adb/adb.cpp の launch_server() に "int result = execl(path, "adb", "-P", str_port, "fork-server", "server", "--reply-fd", reply_fd, NULL);" とあるので、
これを次のようにしてリビルドすることで全インターフェースでlistenしました。

int result = execl(path, "adb", "-a", "-P", str_port, "fork-server", "server", "--reply-fd", reply_fd, NULL);

あるいは、上記 "-a" オプションは system/core/adb/adb_listeners.cpp で宣言されているグローバル変数 gListenAll を 1にセットするだけなので、
こちらを最初から次のようにしてしまっても同様のことが可能です。

int gListenAll = 1;

以上です。

Reply all
Reply to author
Forward
0 new messages