Visual Studio 2015 preview を使って Hyper-V で Xamarin.Android を動かそう

現時点(2014/11/14)で Visual Studio 2015 はプレビュー版だし、Xamarin.Android はアルファ版を入れないとうまく行きそうにないので、うまくいかなくても仕方がないのですが…色々地雷があるので、回避方法(回復方法)をいくつか記録しておきます。

Visual Studio 2015 Preview の発表と共に Android のエミュレーターが Hyper-V 上で動くことが Connect(); で発表された(実演されている)のですが、結構限られた環境でないと動かなさそうな感じです。結論から言えば、私の環境では動いておりません…でしたが、Xamarin.Forms ならば動くことができました。

Visual Studio 2015 Preview をダウンロードする

Visual Studio 2015 Downloads
http://www.visualstudio.com/downloads/visual-studio-2015-downloads-vs

上記からダウンロードができます。まだプレビュー版なので、Hyper-V なり VMWare なりの仮想環境で試したほうがいいのですが、Android エミュレータ自体が Hyper-V で動作しているために、Hyper-V の中で Hyper-V を動かすことはできない/できなかった、ので実機 PC にインストールします。手元の環境では Visual Studio 2013 が入っている上に上書きをしたのですが、これはこれで嵌ります。ちなみに Visual Studio 14 TP が入っていると 2015 をインストールできないので、14 のほうはアンインストールします。

Xamarin.Android を入れる

Hyper-V で動く Android は Visual Studio からしか起動できません。Xamarin Studio からは従来通りの Andorid エミュレータか、Xamarin Android Player を使います。動かしてみるとわかるのですが、Hyper-V 版も Xamarin Android Player 版も速度はあまり変わりません。ただし、Windows Phone のエミュレート環境が Hyper-V であることと、Xamarin Android Player はリモートデスクトップ先では使えない(OpenGLが対応していない)ことが、Hyper-V 版を使ったほうが良い理由になります。

下記は、すでに Xamarin.Android をインストール済みなので、いくつかのテンプレートが表示されていますが、最初はひとつのテンプレートしかありません。

image

そのテンプレートを開くと Xamarin のページに誘導されます。田淵さんのブログにもありますが、Visual Studio で Xamarin.Android 開発を行うときは Bussiness ライセンス以上が必要になります。なので、プレビュー版であっても相当のお金を払っていないと試せないので、結構制限がきついかと。

こんなページが Visual Studio に出てくるので、Download Xamarin をクリックして指定ページに飛びます。

image

左の「Tell us a bit about yourself」に、名前やメールアドレス等を入れて XamarinInstaller-VS2015 をダウンロードします。ちなみに、ライセンスを持っている場合でも(Sign Inしている場合でも)、ここのリンクからダウンロードしなければいけません。

image

Xamarin.Android Update のアルファ版から入れられそうな気もするのですが、うまくいきませんでした。

ビルド時に MergeApkRecipelists なエラーが出る

これで 2013 と同じようにビルドができて Android アプリが作れるかと思い気や、いきなりビルドができなくてこけます。ブランクアプリを作ってもエラーが出るので、はっきり言って設定ミスです。

image

回避策としては、 下記にあるように、C++ のプロジェクトを作って参照設定させるとビルドが通るのですが、実はその後のデプロイに失敗するので意味がありません。

c# 6.0 – Getting Build Error Creating Android Application using Xamarin Extension for Visual Studio 2015 Preview – Stack Overflow
http://stackoverflow.com/questions/26902711/getting-build-error-creating-android-application-using-xamarin-extension-for-vis

どうやら、C++ ネイティブライブラリを必ず読み込むような設定にしてしまっているようです。これは早急に修正されるでしょう。ビルドしたものをデプロイしようとすると JNI のロードでエラーになります。そもそも、C# ライブラリだけを入れたいので、C++ は余計なだけだし、何故か思い余って Visual Studio 2013 に入っている Xamarin.Android にも影響を与えてしまうという悲惨な状態です。

image

解決策としては、Stable に設定し直してください、ってのが正解です。2013 のほうの Hyper-V でのエミュレータは使えなくなりますが、2015 preview のほうかは使えます(使えるといっても、エミュレータを起動できる、という状態なのですが)。

Stable に戻しても、2015 では Android アプリがビルドできない

実は Stable に戻した状態でも、2015 preview では Android アプリがビルドできません。

image

やっぱり、App5.dll.mdb とあるように、C++ のデバッグ情報を書き込もうとして失敗しています。なんだかなーという感じですが、native android はビルドできませんでした。

じゃあ、2015 preview では絶望的なのかといえば、そうではありません。Xamarin.Forms を使うアプリだとビルドができるんですよ。内部的にどうなっているのかわかりませんが(おそらく *.targets を直せばいいんですが)、Xamarin.Forms 用のプロジェクトを作るとビルドが通ります。

VS Emulator Android Phone にデプロイができない

ビルドが正常にできて、いざ Hyper-V 上で動かそうと思うと、一見うまく行きそうに見えますが…ダメです。

image

Hyper-V にインストールされた Android が起動はされるのですが、次のように Connect エラーになります。おそらく adb が Hyper-V 上の Android に接続しようとして失敗していると思うのですが、解決法がわかりません。以前、Android エミュレーターを動かしたときに、何度か遭遇しているネットワークエラーっぽいものなのですがね。

image

ちなみに、従来の Android エミュレータや Xamarin Android Player だと正常に動きます。なので、Hyper-V を使わない、かつ Xamarin.Forms に限定する、のであれば 2015 preview の状態で使えるのですが…いや、素直に 2013 に戻って開発したほうがよさそうです。

Visual Studio 2013 と共存していると拡張機能が 2015 preview に入らない

ここまで、さっくりと 2015 preview に Xamarin.Android がインストールできたように書いていますが、実は、2013 が入っている PC に 2015 Preview を入れると、拡張機能が 2015 のほうに入りません。

こんな感じに Xamarin Account のメニューが出るハズなのですが、最初はでなくて苦労しました。

image

以前、2010, 2012, 2013 が同居している環境でも同じことが起こっていましたが、

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Xamarin\

のフォルダにある拡張機能を Microsoft Visual Studio 14.0 にコピーします。3.9.41.0 のフォルダが、Hyper-V 込みなのですが、すべてコピーしてしまって大丈夫です。

コピーした後は念のために
C:\Program Files (x86)\NuGet\Visual Studio 2015\NuGet.Tools.vsix

を実行しておいてください。拡張機能の状態が更新されて、Xamarin Account の表示が出てきます。

2015 preview + android + Hyper-V は地雷が多い

そんな訳で現時点では、この組み合わせは地雷満載です。地雷を踏み抜く勇者だけが通れる道…つーか、デモでは通った訳なので、素な環境で素なプロジェクトを作れば意外とスムースに進むかなと。

Hyper-V で Xamarin.Forms を動かす手順

先に書いた通り native な Xamarin.Android はビルドエラーになってしまうのですが、Xamarin.Forms の場合は Hyper-V で動作が確認できています。通常の場合は、既に Visual Studio 2013 が入っている状態で、追加で Visual Studio 2015 を入れるでしょうから、ちょっと手順がややこしくなっています。
実機 PC は Hyper-V を動かす都合上、x64 版を使ってください。

  1. 実機 PC に Visual Studio 2015 preview をインストールする。
  2. 実機 PC の Hyper-V を有効にする(Visual Stuido をインストールした時点で Hyper-V が有効になっているはず)
  3. 最初の Xamarin Android プロジェクトを作って、リンク先から XamarinInstaller-VS2015  をダウンロード&インストールする。
  4. Visual Studio 2013 が入っている場合は、
    C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Xamarin\  を
    C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common\IDE\Extensions\ にコピーする。インストーラが Visual Studio 2013 のほうにしか拡張機能をコピーしないためです(これはいずれ直るでしょう)
  5. Bussiness アカウントでログインをして、Xamarin Update で Statble に戻す。
    2015 だけ使っている場合は不要ですが、2013 のほうの Xamarin.Android が動かなくなるのを回避します。
  6. 2015 あるいは 2013 で Xamarin.Forms のプロジェクト( Mobile Apps )を作成する。
  7. Debug 実行をして、一旦、Hyper-V に VS Emulator Android – Phone を作成する。
  8. Debug 実行のままだと、Connect エラーが出るので、一度だけ Release モードで実行する。そうすると、デバッグ用のコネクション( GetProcessId が取れるようになる)が確立されて、以後は Debug モードでも実行できるようになる。

image

この状態で無事、Xamarin.Forms のアプリが立ち上がります。

【速報】 Visual Studio 2015 Preview で Xamarin.Forms 開発が快適に! – Xamarin 日本語情報
http://ytabuchi.hatenablog.com/entry/2014/11/14/214918

田淵さんに先を越されましたが(苦笑)、二番槍ということで。

おまけ

Visual C++ で Android アプリが作れるようになりましたが、内実は Android Open Source Project です。Google の Android とは違うスタイルのオープンソースな Android ってことです。

image

Visual Studio のテンプレートを開くと OpenGL に特化しているらしく、おそらくゲームか画像関係のアプリを作るときに使うもののようですね。なので、C++/CX などのように C# と同じように Android アプリを作れるわけではありません。また、Xamarin.Forms を使うこともできないでしょう。Microsoft が C++ で Android 環境を提供するなんて…と思った方もおられるでしょうが、そういう訳で、もともと Android Open Source としてあるものを組み入れているし、得意分野も異なるので Xamarin 自体とは競合しません。むしろ、Delphi/C++ のほうとぶつけてきたという感じです。Delphi/C++ のほうでは、C++ で Android/iOS アプリが作れることを売りとしているので、そこが魅力的なところなのですが、Visual C++ でも作れるとなると開発環境を移す必要はなく、Visual Studio で統一できる、という結論に至ります。

これもデプロイ時にエラーがでるので、Hyper-V との接続がクリアできればいけそうです(つまりは、私の手元では動いていないのです…)

image

どうやら、一度 VS Emulator Android – Phone との接続を確立してしまうと、他の Debug モードも動くようです。上記の Android + C++ アプリも無事動きました。背景の緑の色が変化するサンプルのようです。

image

カテゴリー: Xamarin パーマリンク

Visual Studio 2015 preview を使って Hyper-V で Xamarin.Android を動かそう への1件のコメント

  1. ピンバック: VisualStudio2015PreviewでXamarin.Androidを作業するためにCryEarth | CryEarth

コメントは停止中です。