Xamarin から BlueStacks を使って実行する

BlueStacks ってのは、Windows や Mac 上の Android エミュレータです。デバッグ用ではなくて、巷の Android ゲームを動かすための仕組みなのですが、これを Xamarin から使ってみます。

Android エミュレータは、Android SDK の高速エミュレータ、使ってますか? | OPTPiX Labs Blog にある Intel Atom (x86) Android エミュレータ を使えばいいんですが、これに必要な「Intel VT」が手元の VMWare と競合してしまうために動きません。まあ、BlueStacks 自体は仮想環境上では動かないので、実機 PC に入れないとダメという制約はあるのですが。後、試してみるとデバッグモードでは動かなくて、リリースモードだけ実行できます。なので、ブレークポイントを置けないので、ログ出力とか何らかの print デバッグをしないとダメっぽいです。素直に実機接続をしたほうがいい、ってのもありますね。

BlueStacks のインストール自体は、日本語Windows 8 Pro で Kindle を動かす方法 | Moonmile Solutions Blog を参考にしてください。

BlueStacks と visual studio + xamarin は同じPCで動作させます。

BlueStacks を起動して、adb devices を実行すると「emulator-5554」が実行された状態になる(このエミュレータ名は異なる可能性あり)

adb tcpip 5555 を実行してポートを開く。

adb connect localhost を実行してポートにつなげる。

image

adb devices を実行すると「localhost:5555」に接続できる。これが先の「emulator-5554」=bluestakcs .

Target Android Devices を更新するために、Visual Studio を再起動する。すると、エミュレータの「Samsung GT-N7000」が出てくる。モデル名は異なる場合あり?

image

Android プロジェクトのプロパティで、API バージョンを揃えて置く。最新の BlueStacks は Android 4.0 だそうなので、これにしておく。

image

デバッグビルドして実行すると、以下のようなエラーが出て実行できない。

image

Loaded assembly: Mono.Android.dll [External]
02-17 11:49:03.560 V/dalvikvm(27932): +++ not scanning ‘/system/lib/libwebcore.so’ for ‘register’ (wrong CL)
02-17 11:49:03.560 V/dalvikvm(27932): +++ not scanning ‘/system/lib/libmedia_jni.so’ for ‘register’ (wrong CL)
02-17 11:49:03.560 V/dalvikvm(27932): +++ not scanning ‘/system/lib/librs_jni.so’ for ‘register’ (wrong CL)
02-17 11:49:03.560 V/dalvikvm(27932): +++ scanning ‘/data/data/SamplePazzle.Android/lib/libmonodroid.so’ for ‘register’
02-17 11:49:03.560 V/dalvikvm(27932): +++ calling dlsym(Java_mono_android_Runtime_register)
Loaded assembly: System.Core.dll [External]
02-17 11:49:03.560 V/dalvikvm(27932): Found ‘Java_mono_android_Runtime_register’ with dlsym – func=0xab9e7805
Loaded assembly: MonoDroidConstructors [External]
Loaded assembly: System.dll [External]
プログラム ‘Mono’ はコード 0 (0x0) で終了しました。
Couldn’t connect to logcat, GetProcessId returned: 0

よくわからないけど、リリースモードで実行するとうまくいく。

image

BlueStacks は、こんな風なゲームも動くので、大抵のものなら大丈夫なはずです。ただし、OpenGL(かな?)の調子が悪いらしく私のPCのグラボ上では再描画がちかちかしていますが。

image

というわけで、かなり制限がありますが、VS2013 + Xamarin + BlueStacks で Android の実行ができます。制約としては、

  • BlueStacks は仮想環境(VMWare上)では動かないので、実PCで動かす必要がある。
  • Xamarin と BlueStacks は同じPCで動かす必要がある。
  • デバッグ実行ができず、リリースモードでの実行のみ可能。

せめて、ログが出ればいいんですけどね。これはあとで調べてみます。

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