Android のモノがどのように機能するかを理解しようとしていますが、公式サイトでこの説明が見つかりません。
Android が Java バイトコードを読み取ることを考慮すると、Mono for Android は Android デバイスにインストールする必要があるフレームワークですか、それとも Java バイトコードにコンパイルするコンパイラですか?
Android のモノがどのように機能するかを理解しようとしていますが、公式サイトでこの説明が見つかりません。
Android が Java バイトコードを読み取ることを考慮すると、Mono for Android は Android デバイスにインストールする必要があるフレームワークですか、それとも Java バイトコードにコンパイルするコンパイラですか?
Xamarin のサイトにあるこの記事では、アーキテクチャがどのようにまとめられているかについて説明しています。
簡単に言うと、C# を Java バイトコードにコンパイルするものは何もありません。Mono for Android アプリケーションには、Mono ランタイムが組み込まれて出荷されます。これは、Dalvik (Android の Java 仮想マシン) と並行して実行されます。Mono ランタイムは、必要に応じて Dalvik とのやり取りを容易にするために呼び出し可能なラッパーを使用しますが、.NET オブジェクトは Dalvik ではなく Mono ランタイムと直接対話します。
開発をスピードアップするために、デバッグ モードのアプリは共有ランタイムを使用して展開時間を短縮し、複数のアプリが同じランタイムを共有できるように設定されています。ただし、これはリリース モードでコンパイルされたアプリケーションではサポートされていないため、リリースして配布するアプリには独自の組み込みの Mono ランタイムが含まれ、他のものに依存することはありません。
この記事から
http://visualstudiomagazine.com/articles/2011/02/01/introducing-monodroid-intro.aspx/
MonoTouch は、アプリケーション内に埋め込まれた Mono ランタイムを含むネイティブ アプリケーションを作成します。MonoDroid では、2 種類のアプリケーションを作成できます。1 つ目は、アプリと Mono ランタイムがバインドされた、MonoTouch アプリケーションに似た単一のスタンドアロン アプリケーションです。アプリケーションに必要なものはすべて、アプリケーション内に組み込まれています。2 番目のタイプは、デバイスにインストールされている共有ランタイムを利用するアプリケーションです。これは、Windows で .NET アプリを実行する方法に似ています。このタイプのアプリケーションでは、アプリは、MonoDroid で作成された他のアプリケーションと共に、共有ランタイムを利用できます。