「カテゴリ:Xamarin.Android」の版間の差分
imported>Administrator |
imported>Administrator |
||
1行目: | 1行目: | ||
− | [[ | + | '''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.Mac]] | ||
+ | * [[Xamarin.iOS]] | ||
+ | * [[Unity]] | ||
+ | * [[PlayStation Suite]] | ||
+ | |||
+ | == 外部リンク == | ||
+ | * http://xamarin.com/monoforandroid | ||
+ | |||
+ | [[category:Android]] | ||
[[category:Xamarin]] | [[category:Xamarin]] |
2018年2月7日 (水) 04:39時点における最新版
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を混在させる