サンプルコードがシミュレータで動かない
XamarinのAndroidのサンプルコード、例えばこれをダウンロードしてXamarinで読み込んで、XamarinAndroidPlayerで動かそうとしても以下のエラーが出て、動きませんでした。
Detecting installed packages
Waiting for packaging to complete
Installing application on device
Deployment failed because of an internal error: Failure [INSTALL_FAILED_CPU_ABI_INCOMPATIBLE]
Deployment failed. Internal error.
INSTALL_FAILED_CPU_ABI_INCOMPATIBLE とあるので、何かCPUが原因と思って設定を見ていた所、それっぽい所を発見しました。
応急処置として、ここのx86にチェックを入れると、動かすことができました。
ただ、ここは選択できない状態になってます。試行錯誤の結果、以下の手順でチェックを入れることができました。
- 一般タブの"Packaging and Development"の、"Use shared Mono Runtime"のチェックを外す
- Advancedタブのロックが外れるので、x86のチェックを入れる
- 一般タブに戻ってチェックを元に戻す
- [OK]を押して保存
どうしてこうなった?
推測ですが、シミュレータがx86のバイナリしか受け付けれないのに、Xamarinのサンプルコードがx86バイナリを作らない設定になってるんじゃないかと思います。ただこのあたり、自分が作ったプロジェクトだと何も設定せずとも動くので、Xamarinが「よろしく」やってくれる所じゃないかなと思うと、なんだか不具合のようにも思います。
自分の環境設定漏れかもしれません。またサンプルコードは数ヶ月前から編集されてないので、今のXamarinに対応できていないのかもしれません。みんな「x86なシミュレータを使ってない」から気づかれてない不具合があるのかもしれません。
原因はよく分からないですが、自力で回避できる応急処置法が分かったので記録として残します。