カテゴリ:Xamarin.Android
Xamarin.Android(読み:ざまりんあんどろいど)とは、Visual Studioを使いC#でAndroidアプリを作れるという代物である。 ベータ版まではMonoDroid、初期の製品版はMono for Androidという名称であった。
アーキテクチャー
Xamarin.Androidは、Android標準のDalvik仮想マシン上で動くのではなく、 Andoroid OSの根底にいるLinuxの上でDalvik仮想マシンと同様にDalvik仮想マシンと並行するかたちでMono仮想マシンが実行される。 Mono仮想マシン自体はDalvik仮想マシン同様にC言語で書かれている。
オーディオやグラフィック、OpenGL、電話制御といったDalvik仮想マシンが提供しているJava APIについても、 Mono仮想マシンとDalvik仮想マシンをブリッジするクラスの提供により利用することができる。
メリットとデメリット
互換性
通常、Android OSのアップデートとDalvik仮想マシンのアップデートはイコールであり、 Android端末によっては製造メーカーの放置プレイにより最新のAPIが利用できない、 また製造メーカーがアップデートを提供してもユーザーの放置により同一端末で複数バージョンのOSが存在し、 それぞれの挙動が異なるなどの問題を抱えていることがある。 さらに一部の機種においては、特定のAPIの挙動が異なる、イベント発生タイミングやイベント発生順序が異なるなどの問題も抱えている。
一方、Mono仮想マシンはアプリと同梱されて配布されるため、Mono仮想マシンを半ば強制的にアップデートできるようになっている。 つまりOSとアプリをセット配布しているようなものであり、Androidのアプリ互換性問題を大幅に軽減でき、 かつアップデートしていない端末でも最新APIが叩けたりするという特徴がある。
ただし、これはメリットばかりではなく、アプリのファイルサイズが桁違いに巨大化するというデメリットもある。 たとえば単純な「Hello World」ですら4MBを超えるapkファイルとなる。 また、アプリの起動には仮想OSの起動も伴うため、アプリの立ち上がりに若干時間がかかるという欠点もある。 この起動時間の問題については、LLVM経由でネイティブコード化するなどの技術の登場により、Xamarin.Androidの最新バージョンでは大幅に改善されつつある。
※ベータ版まではMono仮想マシンは単体アプリとして配布する形式だったが、製品版ではアプリの互換性の向上のためにアプリに同梱されるようになった。なお、開発環境(デバッグ版)では起動速度の高速化のために共有仮想マシンを使うようになっている。
開発環境
- Windows - Visual Studio 2017以降であれば標準搭載
- macOS - Visual Studio for Mac (旧Xamarin Studio)
関連項目
外部リンク
カテゴリ「Xamarin.Android」にあるページ
このカテゴリには 33 ページが含まれており、そのうち以下の 33 ページを表示しています。
M
X
- Xamarin StudioでNuGetでバージョンを指定してパッケージをインストールする
- Xamarin.AndroidでActivityのタイトルバーを消す
- Xamarin.AndroidでAdMobを使う
- Xamarin.AndroidでAndroid IDを取得する
- Xamarin.AndroidでConstraintLayoutを使用する
- Xamarin.AndroidでCPUのクロック周波数を取得する
- Xamarin.AndroidでCPUのコア数を取得する
- Xamarin.AndroidでFirebase Cloud Messagingを使う
- Xamarin.AndroidでGoogle Playからアプリ情報をブッコ抜く
- Xamarin.AndroidでTesseract-OCRを利用する
- Xamarin.AndroidでUSBデバッグの有効無効を取得する
- Xamarin.AndroidでUUIDを生成取得する
- Xamarin.AndroidでViewをBitmapとして取得する
- Xamarin.Androidでアプリを完全に終了させる
- Xamarin.Androidでインテントを受け取る
- Xamarin.Androidでディスプレイをスリープさせない
- Xamarin.Androidでデバッグモードの有無を判別する
- Xamarin.Androidでレイアウトにイベントを書く
- Xamarin.Androidで巨大なデータをActivity間で引き渡す
- Xamarin.Androidで権限を設定する
- Xamarin.Androidで画面の向きを固定する
- Xamarin.Androidで画面遷移する
- Xamarin.Androidで通知を表示しアプリを起動する
- Xamarin.Androidで通知を表示する
- Xamarin.AndroidのIntentで外部アプリを起動する
- Xamarin.AndroidのViewとMonoGameを混在させる