何でやろうと思ったか?
- Android実機でhostsを書き換えるのはすごく面倒
- ソースコードに手を入れることなく、APIサーバの通信を切り替えたい
概要
- dnsmasqを使い、Android実機向けにローカルDNSを立てる
- 対象となるドメインのみ、別途hostsに設定したサーバに向ける
注意事項
「ローカルドメインおよび自分の所有しているドメイン」以外で、この方法を使用してはいけません。
動作検証環境
- MacBook Pro (15-inch, 2017)
- macOS 10.13.4
- homebrew
- Android Studio 3.2 Preview
- Nexus 5X(Android 8.1)
手順
1. dnsmasq をインストール
$ brew install dnsmasq
2. dnsmasq.conf を書き換える
$ sudo vi /user/local/etc/dnsmasq.conf
addn-hosts=/etc/dnsmasq.hosts #専用hostsファイルを設定する
log-queries #クエリログを出力する
3. 専用の hosts ファイルに設定を書き込む
$ sudo vi /etc/dnsmasq.hosts
# test-api01.example.co.jp(192.168.10.100) を api01.example.co.jp として名前解決する
192.168.10.100 api01.example.co.jp
4. dnsmasq を起動する
$ sudo brew services start dnsmasq
5. Android 端末のDNS設定に自分のMacのIPアドレスを設定する
※Nexus 5X(Android 8.1) での操作例です。
- [設定]を選択する
- [ネットワークとインターネット]を選択する
- [Wi-Fi]を選択する
- 使用中のWi-Fiを選択する
- [ネットワークを変更]を選択する
- [詳細設定]を選択する
- [IP設定]を[DHCP]から[静的]に変更する
- [DNS1]に自分のMacのIPを設定する
- [DNS2]に既存のDNSを設定する(8.8.8.8等)