Excite Smartphone Engineer's Blog

2013年 01月 16日

root不要!Androidのhostsを書き換える

エンジニアの黒田です。

Androidをroot化するメリット・デメリットは至るところで紹介されています。
開発者としては「hostsを書き換えたい」という理由が多いのではないでしょうか。

root化することは非常にリスクを伴いますし、なにかあってからではサポートが受けられません。
そこで今回はroot化せずにhostsを書き換える方法ご紹介したいと思います。



と、言っておいてなんですが、実はAndroidのhostsは書き換えていません。

簡単に説明するとAndroidをproxyサーバー経由でネットワーク接続し、proxyサーバー側のhostsを書き換えるという手法をとりました。

1. apacheのProxyサーバー機能を有効にする

今回は自分のmacをproxyサーバーにしました。

既にmac内でapacheを立てていましたので、httpd.confに下記を追加

<IfModule mod_proxy.c>
  ProxyRequests On
  ProxyVia On
  Listen 8080
  <Proxy *>
    Order deny,allow
    Deny from all
    Allow from 192.168
  </Proxy>
</IfModule>


apacheを再起動すればproxyサーバーが有効になります。

2. macのネットワーク共有を有効にする


macの「インターネット共有」を「入」にします。

e0291676_22264547.png



3. AndroidをmacのWiFiネットワークに接続


まずは先ほど有効にしたmacのWiFiネットワークがあることを確認します。

e0291676_2240382.png


Android3.1からWi-Fiアクセスポイントごとにproxyサーバの設定ができるようになりました。
該当するネットワークを長押しすると下記のような選択画面が出てきます。
「ネットワーク設定を変更」を選択します。

e0291676_2240431.png



「拡張オプションを表示」にチェックを入れます。

e0291676_22405238.png



「プロキシ設定」で「手動で選択」を選び、macのIPアドレスとポート8080を入力します。

e0291676_22404767.png



これでAndroidがネットワーク接続する際はmacのproxyサーバーを経由することになります。
その際、Andoridからはproxyサーバー側のhostsを参照します。

4. AndroidからDNSに登録されていないhostを参照


試しに、macのローカル環境で構築したサービスに接続してみます。
mac側のhostsに下記を入力します。


127.0.0.1 hosts-test.excite.co.jp



Androidから「http://hosts-test.excite.co.jp」にアクセスするとちゃんと表示されました。

e0291676_22405657.png



若干面倒ですが、root化する手間を考えるとはるかに安全で簡単だと思います。
ローカルで開発中のWebページを実機で確認したい場合などには使えるのないでしょうか。

by sp_tech | 2013-01-16 15:49 | Android | Comments(0)


<< Android開発の手助けに!...      Android端末のrootを... >>