エミュレーターのリストを表示
※ Android 11 だと hosts ファイルの転送ができませんでした。
$ ~/Library/Android/sdk/emulator/emulator -list-avds
Pixel_3a_XL_API_28_9.0_
エミュレーターを書き込みモードで起動
$ ~/Library/Android/sdk/emulator/emulator -avd Pixel_3a_XL_API_28_9.0_ -writable-system
上記コマンドを実行するとエミュレーターが起動する。
既にエミュレーターが起動している場合は
emulator: WARNING: System image is writable
emulator: ERROR: Running multiple emulators with the same AVD is an experimental feature.
Please use -read-only flag to enable this feature.
こんなエラーが表示されるので終了してからコマンドを実行する。
注意
ここで起動するエミュレーターは 「Play Store」ではない ものでないとダメらしい。
root を取得
もうひとつターミナルを起動して以下実行する。
$ ~/Library/Android/sdk/platform-tools/adb root
restarting adbd as root
もし「Play Store」のエミュレーターを起動していた場合は
adbd cannot run as root in production builds
こんなエラーが出る。
再マウント
$ ~/Library/Android/sdk/platform-tools/adb remount
remount succeeded
エミュレーターの hosts ファイルを取得
$ ~/Library/Android/sdk/platform-tools/adb pull /system/etc/hosts ~/Desktop/
/system/etc/hosts: 1 file pulled. 0.0 MB/s (79 bytes in 0.002s)
Android Studio の Device File Explorer でエミュレーター内のファイルを確認すると
/etc/hosts
も存在するが /system/etc/hosts
へのリンクが貼ってあるだけ。
hosts ファイルを編集
127.0.0.1 localhost
::1 ip6-localhost
10.0.2.2 変更するドメイン ← 追記
ローカルへ接続する場合、 10.0.2.2
でないとダメらしい。
hosts ファイルを転送
$ ~/Library/Android/sdk/platform-tools/adb push ~/Desktop/hosts /system/etc/hosts
/Users/*****/Desktop/hosts: 1 file pushed. 0.0 MB/s (79 bytes in 0.011s)
もし書き込みモードでエミュレーターを起動していない場合は
adb: error: failed to copy '/Users/*****/Desktop/hosts' to '/system/etc/hosts': remote couldn't create file: Read-only file system
こんなエラーが出る。
root を解除する
$ ~/Library/Android/sdk/platform-tools/adb unroot
restarting adbd as non root
再起動する
$ ~/Library/Android/sdk/platform-tools/adb reboot
表示されるか確認する
以上で hosts が変更されたハズ。
Chrome などでちゃんと表示されるか確認する。