ちょっとしたAndroidアプリを作ろうと思ったのですが、SSDを入れ替えた時に以前のRubotoでの開発環境をなくしてしまいました。
再びRubotoの環境を整えても良かったのですが、最近Xamarinが気になっていることから、Xamarinの開発環境構築とHello World的なことを試してみました。
環境
- Core 2 Duo世代環境
- Core i 第一世代環境
- Android端末
- XamarinStudio 5.7.1 (build17)
- Visual Studio 2013 Community
インストール
以下を参考に、公式からダウンロードしてインストールします。今回は特にパスを変更することなくインストールしました。
- Windows に Xamarin.Android をインストール : XLsoft エクセルソフト
- これから Xamarin を始めたい方向けの凄く丁寧なインストールガイド (Windows/Android 編) - Xamarin 日本語情報
Xamarin + VisualStudioを試す
以下の記事でVisualStudio CommunityでもXamarin開発ができるようになると見かけたため、現時点ではどうかを試してみました。
Microsoft and Xamarin Expand Global Partnership | Xamarin Blog
インストーラーでのインストール時にVisualStudioに関する部分が失敗していたので、再度Xamarin 3.2.236.msi
をダウンロード・実行して再度インストールを試してみました。
最初はXamarin for Visual Studio 2013
のみを選択してインストールしましたが、Android Applicationのプロジェクトテンプレートを開こうとしたところ、以下のエラーが発生しました。
インポートされたプロジェクト "C:\Program Files(x86)\MSBuild\Xamarin\Android\Xamarin.Android.Csharp.targets" が見つかりませんでした。
宣言のパスが正しいかどうか、およびファイルがディスクに存在しているかどうかを確認してください。
そこで、Xamarin.Android SDK
を追加でインストールしたところ、プロジェクトテンプレートを展開することができました。
次にビルドをしてみたところ、Xamarinアカウントへのログインが求められビルドできませんでした。
そのため、VisualStudio Communityではまだ使えないのかなと考え、Xamarin Studioで開発をすることにしました。
デバッグ環境の構築
Nexus7
カメラモードにする必要があるため、以下を参考に切り替えました。
kakakikikekeのブログ: Nexus7でUSBデバッグモードを有効にする方法
開発端末
Nexus7を接続しただけでは認識されなかったので、Google USB Driverを入れました。Webサイトの場合、以下の場所にありました。
Google USB Driver | Android Developers
エミュレータ Genymotion Emulator
をセットアップ
速そうなエミュレータGenymotion
を見かけたため試してみようと考えました。
ただ、古い世代のCPUでも動作するのか分からなかったため、以下を参考にして、Core2 Duo世代とCore i 第一世代の2つの環境にインストールしてみることにしました。
VirtualBoxを使用したAndroidエミュレータ Genymotion を導入 - Qiita
なお、実機に合わせて仮想マシンは Google Nexus7 4.4.4 800x1280
で作成します。
Core 2 Duo環境
Core2 DuoながらWinodws8.1を入れている開発環境です。
事前に調べたところ、Windows8.1ではHyper-VとVirtualBoxの相性が悪いようでした。そこで以下を参考にBCDEditを使って起動時にHyper-Vの有無を選択できるようにしました。
Switch easily between VirtualBox and Hyper-V with a BCDEdit boot Entry in Windows 8.1 - Scott Hanselman
Hyper-Vを切った状態でGenymotionを立ち上げようとしたところ、今度は次のエラーが出ました。
Unable to start the virtual device To start virtual devices, make sure that your video card supports OpenGL 2.0 and update the drivers. Details: Failed to initialize backend EGL display (error:4) If possible, update your video card drivers
似た例がないかを調べてみると、同じような世代のハードで動作していないようです。
Genymotion(新AndroVM Player)について - CBRで風になる~♪
そのため、Core2 Duo世代のCPUを持つ開発環境では使うのを諦めました。
Core i 第一世代環境
こちらも同じようにセットアップしてみたところ、無事に起動しました。
ただ、上記のQiitaにある通りネットワークまわりでエラーが出たため、VirtualBoxマネージャにてネットワーク設定を変更し、動作を確認できました。
あと、Genymotionのシャットダウン方法が分かりませんでしたが、VirtualBox ManagerのGUIよりシャットダウンできました。
android - How do I stop a Genymotion virtual device? - Stack Overflow
XamarinでのHello Worldコード
Android Application
テンプレートを使いました。今回はHello World的なものだったので、特に内容の変更はありません。
デプロイ
Xamarin StudioよりGenymotionと実機の両方にデプロイしましたが、問題なく動作しました。
なお、Android Application
テンプレートのコードをそのままデプロイした時のファイルサイズは、6KBでした。
また、XamarinのStarterではファイルサイズが128KBまでビルドできるようですが、どのファイルサイズを指すのか分かりませんでした。
そのことをつぶやいていたところ、以下の返信をいただきました。ありがとうございました。
Xamarin Starterの128KB制限って、どのことを指すんだろう。dllのサイズかな。
— thinkAmi (@thinkAmi) February 5, 2015
@thinkAmi Monoランタイムを省いたビルド後のdllサイズだと思われます。試しにStarterでRestSharpを入れてみたらサイズ制限のためビルド出来ないエラーが出ましたが、合計バイト数が大体あってました。 pic.twitter.com/Jr2vPlUW0d
— 田淵 義人@エクセルソフト (@ytabuchi) 2015, 2月 6
とりあえず環境ができたので、いろいろと試してみようと思います。