android studioのエミュレーターから、ホストPCに"localhost"でアクセスする

2023/12/22に公開

はじめに

この記事はcommmune Advent Calendar 2023、20日目の記事です
android studioのエミュレーターからホストPCに通信を行う際、「10.0.2.2を使う」記事は見つかったのですが「localhostという名前で通信する」があまり無さそうだったのでまとめてみました

前提

  • android studio 2022.3.1 で確認
  • adbコマンドが使えること(path通ってれば尚良し)

TL;DR

エミュレーター起動して、ホストPCのterminalで以下のコマンドを実行

adb reverse tcp:<デバイスのポート番号> tcp:<ホストのポート番号>

adb forwardとはポート番号の指定が逆になる様子です

結果

概要

全体のイメージ(多分こんな感じだと思います)

その他のあれこれ

  • Android Emuratorのネットワークアドレス空間にかかれている通り、localhostを使わなくて良いのであればポート転送設定の必要は無く、接続先に10.0.2.2を使えばOKです。例えばhttp://10.0.2.2:8082と言った具合
  • localhostで通信したい場合、ポート転送設定がなければエミュレーターのlocalhostが127.0.0.1に解決され(宛先が当然エミュレーター自身を指すので)そのままではホストと通信できません。ダメ元でエミュレーターのhostsファイルを10.0.2.2 localhostに書き換えてみましたが、やはり通信できませんでした
  • 転送したログなどがあれば確認 & 納得の上紹介したかったのですが、次回以降にしたいと思います
コミューン株式会社

Discussion