Visual Studio 2015 preview を使って Hyper-V で Xamarin.Android を動かそう | Moonmile Solutions Blog
http://www.moonmile.net/blog/archives/6648
では、Visual Studio 2015 preview で Hyper-V の Android エミュレータを動かす方法を紹介しましたが、もう少し頑張ると現状の Visual Stuido 2013 からも Android エミュレータを動かすことができます。
注)動かせるのは動かせるのですが、Visual Studio からデバッグモードで動かすことはできなくて、何故か Release モードでデプロイした後に、エミュレータ上でアプリを起動できる、ってところまでです。デバッグ時に「Couldn’t connect to logcat, GetProcessId returned: 0」が出てデバッグ用のコネクションが接続しないのですが、アプリのデプロイは成功している状態になりました。
Visual Studio 2015 Preview をインストールする
Preview 版自体をインストールしない方法を模索してはいるのですが、ちょっと無理そう。ただし、Preview 版であっても 2013 と同居ができるので、この方法を使います(たぶん、2010 や 2012 が入っている状態でも同じだと思います)。
Visual Studio 2015 Downloads
http://www.visualstudio.com/downloads/visual-studio-2015-downloads-vs
- 実機 PC に Visual Studio 2015 preview をインストールする。
- 実機 PC の Hyper-V を有効にする。
- 最初の Xamarin Android プロジェクトを作って、リンク先から XamarinInstaller-VS2015 をダウンロード&インストールする。
- Visual Studio 2013 の拡張機能を 2015 へコピーする
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 のほうにしか拡張機能をコピーしないためです) - C:\Program Files (x86)\NuGet\Visual Studio 2015\NuGet.Tools.vsix を実行して拡張機能を有効にする。
- Bussiness アカウントでログインをして、Xamarin Update で Statble に戻す。
- Statable に戻すときに、何故か元に戻しすぎてログインができない状態までになるが、慌てずに xamarin.com から XamarinInstaller をダウンロードして、再インストールすれば回復します。
- 2015 あるいは 2013 で Xamarin.Forms のプロジェクト( Mobile Apps )を作成する。
- Debug 実行をして、一旦、Hyper-V に VS Emulator Android – Phone を作成する。
- Debug 実行のままだと、Connect エラーが出るので、一度だけ Release モードで実行する。そうすると、デバッグ用のコネクション( GetProcessId が取れるようになる)が確立されて、以後は Debug モードでも実行できるようになる。
ここまでやると、Visual Studio 2013/2015 で Xamarin.Forms を使ってアプリを作ることができます。
お次は Xamarin.Android でもビルドできるように C:Program Files (x86)MSBuildXamarinAndroidXamarin.Android.Common.targets を修正します。
<Target Name="_ConvertDebuggingFiles" Inputs="$(OutDir)$(TargetFileName);$(_IntermediatePdbFile)" Outputs="$(OutDir)$(TargetFileName).mdb" DependsOnTargets="_ValidateAndroidPackageProperties"> <ConvertDebuggingFiles InputFiles="$(OutDir)$(TargetFileName)" /> <!-- <Touch Files="$(OutDir)$(TargetFileName).mdb" /> --> </Target>
デバッグ用の *.mdb ファイルを探してエラーになっているので、これをコメントアウトします。ファイルはメモ帳などを管理者モードで起動して編集してください(Visual Studio 自体を管理者モードで起動しても ok です)
この状態で、VS 2015 からエミュレータを起動して、VS 2013 を開くと、Target Android Deveice のに Hyper-V のエミュレータが現れます。
Debug モードでビルドをすると、デプロイ&デバッグコネクションのエラーになりますが、Release モードにすると正常にデプロイが完了します。ただし、残念なことにデバッグ状態では起動できないので、便利なブレークポイントなどの機能が使えません。まあ、そういう場合は Xamarin Android Player を使うということでよいでしょう。
あと、Hyper-V の Android Emulator は v4.4 が入っているので Xamarin.Android プロジェクトの設定を合わせておきます。
それと、Android Options > Advanced を開いてサポートする CPU に x86 を含めてください。Java のサイズとかはいつも通りに設定します(設定しなくても普通は動きます)。
単独で VS Emulator Android – Phone を起動する
これで Visual Studio 2013 から Hyper-V の Android Emulator を起動することはできたのですが、最初の起動を 2015 から行わなければいけないというのも変です。なので、単独で Emulator が起動できるようにしましょう。
WP8 のエミュレーターを単体起動するためのショートカット – 高橋 忍のブログ – Site Home – MSDN Blogs
http://blogs.msdn.com/b/shintak/archive/2012/11/06/10366015.aspx
実は、Windows Phone のエミュレータを起動する方法と同じです。VS Emulator Android は、
C:\Program Files (x86)\Microsoft Visual Studio Emulator for Android\1.0\XDE.exe
にあるので、実行ファイルを差し換えればよいでしょう。ヘルプ自体は xed.exe /? にすると表示ができます。
[Window Title]
Visual Studio Emulator for Android[Content]
Emulator version 1.0.41108.1Usage:
xde [/name vmname] [/vhd vhdpath] [/memsize sizeMB] [/com[1|2] pipeName] [/createDiffDisk diffVhd] [/language lcid] [/video widthXheight] [/diagonalSize screenSize] [/showName] [/noStart] [/snapshot] [/displayName text] [/fastShutdown] [/noALS] [/noFFC] [/noGyro] [/noMag] [/noNFC] [/softButtons] [/camera capability] [/?]/name vmname: The name of the virtual machine. If you do not provide a name, the default ‘Default Emulator’ is used.
/vhd vhdpath: The path to the VHD for the virtual machine (required if the virtual machine does not exist).
/memsize sizeMB: The amount of RAM in MB that the virtual machine should use. Default: 512
/com[1|2] pipeName: The named pipe that the host uses to communicate with serial ports on the virtual machine.
/createDiffDisk diffVhd: Creates a differencing disk, using the path specified by /vhd as the base. The virtual machine uses diffVhd for its VHD.
/language lcid: The hex language ID to use for the emulator. This ID applies only to the host-side emulator application and not to the guest. Example: /language 040c
/bootlanguage lcid: The hex language ID to use for the emulator. This ID applies only to the guest-side OS and not to the host-side emulator application. Example: /bootlanguage 040c
/video widthXHeight: The initial screen resolution of the emulator application. Example: /video 640×800. Default: 480×800
/diagonalSize screenSize: Specifies the diagonal screen size for the emulator (in inches).
/showName: Displays the name of the virtual machine on the emulator chrome.
/noStart: Exits the program without showing the emulator (after creating or modifying the virtual machine).
/snapshot: Tries to boot to the default snapshot, or create a new snapshot if no snapshots are found.
/displayName text: The text to use for the application window and task bar icon.
/fastShutdown: Turns off the virtual machine without waiting for the OS to gracefully shutdown.
/noALS: Disables the Ambient light sensor.
/noFFC: Disables the Front facing camera.
/noGyro: Disables the Gyroscope.
/noMag: Disables the Magnetometer.
/noNFC: Disables the NFC sensor.
/softButtons: Enables the software buttons. (Not valid for all resolutions.)
/camera capability: Switches the camera to the specified capability mode. Valid capabilities: WP8
/?: Displays this help dialog.
私の環境では、/vhd と /video だけ指定すると動くので、/createDiffDisk しなくても良いかもしれません。
“C:\Program Files (x86)\Microsoft Visual Studio Emulator for Android\1.0\
XDE.exe” /vhd “D:vmVS Emulator Android – PhoneVirtual Hard Disksvsemulator.
phone.android.vhd” /video 480×800
な感じのバッチファイルを動かして起動させます。
/video の指定値は C:\Program Files (x86)\Microsoft Visual Studio Emulator for Android\1.0\skins にあるスキンのサイズに合わせれば大丈夫なはずです。それ以外は対応してないと思います。いくつか適当な値を入れてもエラーになってしまうので。
後は、Visual Studio 2013 からデプロイ先を指定すれば ok です。