Androidアプリ開発時の小ネタをひとつ。
サーバータイプのAndroidアプリを作成するとき、エミュレーター上で起動したアプリに外部ネットワークのマシンから接続したいときがあると思います。
そのときのWindowsでの設定方法を自身の備忘録も兼ねて記載します。
概要
外部ネットワークからエミュレーターに接続する場合、2段階でポートフォワーディングをする必要があります。
1段階目はローカルネットワークとエミュレーターのフォワーディングです。これにはadbコマンドを使います。
2段階目は外部ネットワークとローカルネットワークのフォワーディングです。Windowsの場合、netshコマンドを使います。
ローカル-エミュレーター間のポートフォワーディング
1.エミュレーターの状態を確認
> adb devices
List of devices attached
emulator-5554 device
エミュレーターが起動していれば上記のように表示されます。
2.ポートフォワーディングの設定
> adb forward tcp:ローカルの待ち受けポート tcp:エミュレーターの待ち受けポート
実行例:ローカルの待ち受けポートとエミュレーターの待ち受けポートが8000の場合
> adb forward tcp:8000 tcp:8000
エミュレーターを停止すると設定が消えるので、再起動した場合は再設定します。
設定の確認は下記のコマンドで行います。
> adb forward --list
emulator-5554 tcp:8000 tcp:8000
外部ネットワーク-ローカル間のポートフォワーディング
管理者権限でコマンドプロンプトを開き、下記を実行します。
> netsh interface portproxy add v4tov4 listenaddress=外部向けIPアドレス listenport=外部向け待ち受けポートアドレス connectaddress=127.0.0.1 connectport=ローカルの待ち受けポート
実行例:外部向けIPアドレスが192.168.0.3、外部向け待ち受けポートアドレスとローカルの待ち受けポートが8000の場合
> netsh interface portproxy add v4tov4 listenaddress=192.168.0.3 listenport=8000 connectaddress=127.0.0.1 connectport=8000
以上、小ネタでした~。