【Android】 エミュレータのhostsファイルを編集する方法【xamppのvirtulahost許可】

これは自分のために残しておく記事です。

だから少し分かりにくい説明もあるかもしれません。

やりたいことは次のようなこと

  1. xamppなどlocalhostの開発環境がある
  2. Androidエミュレータからそれを表示したい
  3. でも普通にアクセスしても表示できない
  4. どうやらhostsファイルの編集が必要みたい

この手順が分かったのでメモしておきます。

まず想定するローカルの開発環境について

ここではローカルで開発してるとします。

僕の場合はこういう環境で開発してました。

  • XAMPPを使ってローカル開発
  • バーチャルホスト機能を有効化

バーチャルホスト機能を有効化しているため、ローカル環境では hogehoge.com のようなバーチャルなドメイン名でアクセスできます。

問題はAndroidでそのサイトを確認したかった時です。たとえエミュレータが開発PCで動いていても異なるhosts環境だからアクセスできません。

それが困りました。

どうやらhostsファイルの編集が必要らしい

ググっていくとhostsファイルの設定が必要みたい

▼ hostsファイルとは

まず、読み方は「ホスツファイル」です。これはそのままです。ファイルとついていることから、何かのファイルであることは何となく予想できますね。一言でいうと、「ホスト名とIPアドレスの対応を書いておくファイル」です。「このホスト名が入力されたら、このIPアドレスになるよ」というような内容が書かれています。

引用元 : https://glodia.jp/blog/10365/#hosts%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%A8%E3%81%AF%EF%BC%9F

▼ hostsファイルの例(Windows)

このようにIPとホスト名の対応関係の定義

そしてhostsファイルはAndroid・iPhoneのようなスマホ端末にもしっかり存在してます。もちろんAndroidエミュレータにもhostsファイルがあります。

このhostsファイルの設定が必要だったんです。

具体的な設定方法は次から説明していきます。

Androidエミュレータでhostsファイル編集の方法手順

1.APIレベル28以下でエミュレータを作成する

残念ながらAPIレベル29以上では無理みたいです。

だからAPIレベル28以下のエミュを作ってください。

作成はAndroidStudio内で行ってOKです。

▼ そしたらemulatorコマンドで起動

このように emulator -list-avds で対象のAVD識別名を調べ、 -writable-system オプションを付けてエミュレータ起動してみてください。

この時点ではただエミュ起動しただけ

2.hostsファイルをadbコマンドから編集する

つづいて別コンソールを起動します。

そして次のコマンドでhosts取得です

これで C:\hoge にエミュのhostsが保存されます。

そこに追加したいホスト名を追加してください

▼ hostsの編集例(hogehoge.comを追加)

Androidエミュレータでは 10.0.2.2 が開発元マシンのlocalhostを表すという特例ルールがあります。(詳しくはここを参照 : https://developer.android.com/studio/run/emulator-networking

▼ 編集したhostsをエミュにアップロード

▼ 念のためhosts書き換え内容を確認

最後に adb reboot を忘れずに

そしてエミュレータからxampp開発してるサイト(仮にhogehoge.comとする)を開いてみると無事アクセスできました!(^_^)v

hostsファイルの編集が必要なのは面倒だけど、エミュレータからローカル開発してるサイト・Webアプリにアクセスすることは可能です。

ただし実機端末ではroot化が必要

あまりにも面倒なのでエミュだけで十分です……