Challenge Engineer Life !

エンジニア人生を楽しみたい!仕事や趣味で学んだ技術的なことを書いていくブログです。

Xamarin.FormsのWebViewでerr_name_not_resolved

先日のBuild 2016でXamarinが無償で利用可能となったので、早速使ってみてます。

www.publickey1.jp

Android/iPhoneアプリを作りたいなぁと思っていて、Cordovaを調べていたのですが、その矢先に上記ニュースを聞いて、久しぶりにC#も書いてみたくなったのでXamarinへ。

日本語情報も多そう!
ytabuchi.hatenablog.com

また、既にMSさんが無料と思えないようなガイド本出してて(PDF)良い感じです。

Xamarin.Forms - Xamarin

f:id:kikutaro777:20160406011456j:plain

ということで本題。

err_name_not_resolved

VAIO Duo 13 + Windows 8.1環境でVisual Studio + Xamarinで環境を整えました。

色々試してる中で、Xamarin.FormのWebViewを以下のように利用してみたのですが

var webView = new WebView
{
    Source = "http://google.co.jp"
};
Content = webView;

GoogleとかYahooを指定しても画面が以下のような表示でした。

f:id:kikutaro777:20160407004509p:plain

err_name_not_resolvedとは…。どうもDNSが引けてない感じ?

Androidのシミュレータの問題っぽいですが、Macを持っていない+WindowsPhoneの環境までは入れなかったので、現状Androidだけしか確認できず(^^;

情報は色々あり、チェックポイントの整理を兼ねてまとめてみます。

Android ManifestのINTERNET permission

インターネット接続のパーミッションがあるとのこと。Androidのプロジェクト、プロパティから

f:id:kikutaro777:20160408023244j:plain

Android ManifestのINTERNETにチェック

f:id:kikutaro777:20160408023541j:plain

実体としてはAndroidManifest.xmlに書き込まれてるみたいです。

f:id:kikutaro777:20160408023854j:plain

f:id:kikutaro777:20160408023900j:plain

これ自体はDNSと関係ない所なので、まぁ動かず。

以下サイトに色々と。

Deep Shah's Blog: Android - Fixing the no internet connection issue on emulator

Androidエミュレータ起動時にDNS指定

上記サイトの下に「-dns-server」オプションをエミュレータ起動時に指定する、とありました。Visual Studioからだとどこだろうか…と探したのですが、以下っぽい。

ツールメニューのオプションから

f:id:kikutaro777:20160409232915j:plain

XamarinのAndroid Settingsを選択

f:id:kikutaro777:20160409232857j:plain

Additional Emulator Launch Argumentsとあり、ここで指定できそうです。試してみたけど、自分の環境では駄目でした。

AndroidエミュレータのDNS設定確認

以下サイトにエミュレータでのDNS設定確認方法がありました。

Getting Signals: [TIPS]Androidのエミュレータでネットに接続できない

Visual Studioからだと、どこなんだろう…と。以下で確認できました。

Open Android Adb Command Prompt

f:id:kikutaro777:20160409173420j:plain

Dos窓が立ち上がり、adb shellと打てば上記サイトと同じ確認ができました。
DNSの設定が空欄だったので、Google Public DNSとかipconfigで確認したやつとか打ったのですが、自分の環境では駄目でした。

f:id:kikutaro777:20160409173804j:plain

LAN接続

結構あちこちで「ここをみな」って引っかかったのは以下情報。ネットワーク接続のLANを無効に、って感じなのかな。VAIO DUOは直接のLANポートがないので…

stackoverflow.com

vEthernetの確認

で、自分がうまくいったのはこれでした。

superuser.com

Androidエミュレータの話でない情報源ですが、vEthernetの設定とかみて、無効にしたりしてみ、みたいな。

確かに自分の環境、前にvirtual box入れたり、boot2docker入れたりで何かvEthernetたくさんあった気が…と。
以下のような感じ。

f:id:kikutaro777:20160409232514j:plain

で、一通り無効にしてみていたら

f:id:kikutaro777:20160409233349j:plain

出た!

ということで解決しました。vEthernetだと何がどうなってDNSあれだったんだろう…ってイマイチわかりきってない感じですが、、、

ということで遊べる。

にほんブログ村 IT技術ブログへ
にほんブログ村 にほんブログ村 IT技術ブログ Javaへ
にほんブログ村