0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Android エミュレータの hosts ファイルを編集する方法

Posted at

Android アプリ開発において、特定のホスト名を IP アドレスに紐付けたい場合があります。この記事では、Android エミュレータの hosts ファイルを編集する方法について解説します。

前提条件

  • Android Studio がインストールされていること
  • Android エミュレータが作成されていること
  • ADB (Android Debug Bridge) がインストールされていること

手順

1. 利用可能なエミュレータの確認

まず、利用可能な Android エミュレータ (AVD) の一覧を確認します。

emulator -list-avds

実行結果(例):

Pixel_9_Pro

2. 書き込み可能なシステムでエミュレータを起動

システムパーティションに書き込みができるようにエミュレータを起動します。

emulator -avd Pixel_9_Pro -writable-system &

-writable-system オプションを使用することで、システムパーティションへの書き込みが可能になります。
& は、プロセスをバックグラウンドで実行するためのものです。

3. hosts ファイルの書き込み権限を取得

Android 10 以上の場合

Android 10 以上では、セキュリティ強化のため、システムパーティションの書き込み権限を取得するプロセスが複雑になっています。

# ADB ルート権限を取得
adb root

# ステータスが device になるまで待つ
adb devices

# 再度ルート権限を確保
adb root

# エミュレータを再起動
adb reboot

# 再起動完了し device と表示されるまで待つ
adb devices

# システムパーティションを書き込み可能にリマウント
adb remount

# "remount succeeded" と表示されれば完了

Android 9 以下の場合

Android 9 以下では、比較的シンプルなコマンドで書き込み権限を取得できます。

# ADB ルート権限を取得
adb root

# システムパーティションを書き込み可能にリマウント
adb remount

# "remount succeeded" と表示されれば完了

4. hosts ファイルの編集

hosts ファイルを編集するには、以下の2つの方法があります。

方法1: ホスト PC で hosts ファイルを編集

# エミュレータから hosts ファイルを取得
adb pull /system/etc/hosts

# ローカルで hosts ファイルを編集
# お好みのエディタで hosts ファイルを開き、必要なホスト設定を追加
# 例: 192.168.1.100 myserver.local

# 編集した hosts ファイルをエミュレータに戻す
adb push hosts /system/etc/hosts

# エミュレータの hosts ファイルを確認
adb shell cat /etc/hosts

方法2: エミュレータ内で直接編集する

# エミュレータのシェルに入る
adb shell

# hosts ファイルの場所に移動
cd /system/etc

# hosts ファイルの内容を確認
cat hosts

# 直接編集する場合
vi hosts
# または
echo "192.168.1.100 myserver.local" >> hosts

注意事項

  1. エミュレータ内での編集よりも、ホスト PC での編集の方が操作しやすい場合が多いです。

  2. 変更が反映されない場合は、権限の問題が考えられます。adb remount が正しく実行されているか確認してください。

  3. 設定変更後、一部のアプリケーションでは再起動が必要な場合があります。

  4. エミュレータの特殊な IP アドレスと競合しないように注意してください。

    • 10.0.2.2 - ホストマシンの localhost にアクセスするための IP
    • 10.0.2.3 - ホストマシンのプライマリ DNS サーバー
  5. -writable-system オプションは Android 10 以降のエミュレータで特に重要です。

まとめ

Android エミュレータの hosts ファイルを編集することで、特定のホスト名を IP アドレスに紐付けることができます。これは開発環境でのテストや、特定のサーバーへの接続をシミュレートする際に役立ちます。

特に Android 10 以上では、セキュリティ強化のため手順が複雑になっていますが、この記事で紹介した手順に従うことで、問題なく hosts ファイルを編集できます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?