※本記事は、旧ブログからの再掲です。

Androidエミュレータからインターネット接続ができない場合の対処方法です。

これまでのところ、以下2点の場合にインターネット接続ができないことがありました。

(1)DNS設定が原因の場合
(2)SSL接続時の証明書が原因の場合

 

emulator_internet_err_1


 
(1)DNS設定が原因の場合

ネットで調べてみたところ、何らかの要因でDNSサーバーにアクセスできなくなっているとのことでした。
この場合には、DNSサーバーを設定すれば良いようです。

ターミナルで現在のDNS設定を確認すると、dns1のみ設定されていました。

$ cd /Applications/android-sdk-macosx/platform-tools
$ ./adb shell
# getprop
[net.dns1]: [10.0.2.3]
[net.dnschange]: [1]
[net.eth0.dns1]: [10.0.2.3]
[net.eth0.gw]: [10.0.2.2]

10.0.2.3 は Using the Emulator によると、First DNS server とのことです。
ここに何らかの要因でアクセスできないので、セカンダリを設定します。

# setprop net.dns2 10.0.2.4

上記設定をした後、エミュレータを再起動するとインターネット接続可能となります。

もし、上記IPアドレスを設定しても接続できない場合は、Google Public DNS を設定します。

# setprop net.dns1 8.8.8.8
# setprop net.dns2 8.8.4.4

※8.8.8.8/8.8.4.4 は Google Pubilc DNS

emulator_internet_err_2

下記のように、Eclipseの環境設定で対処する方法もあったので試してみたのですが、
私の場合にはうまくいかないことの方が多いので、上記方法で対処しています。

[Eclipse]→[環境設定]→[Android]→[起動]の設定に
”デフォルト・エミュレーター・オプション”という項目があるので、そこに
-dns-server 8.8.8.8,8.8.4.4
と入力し適用するとネット接続可能になります。
(Eclipse再起動必要)

emulator_internet_err_3

<参考>
[Android Developers] Using the Emulator

 


 
(2)SSL接続時の証明書が原因の場合

WebViewにてHTTPS接続しようとした場合、証明書に問題があると上記エラー画面が表示されるようです。
エラーを無視して処理を進めるには
下記のように onReceivedSslError()をオーバーライドして、handler.proceed()を呼べば良いらしいですが、オススメできません。

<参考>
[Android Developers] SslErrorHandler

 


Comments are closed.