Xamarin の動作原理
Xamarin の動作原理というと大げさですが、Xamarin は .NET Framework のクロスプラットフォーム版である Mono 上で動作します。
Mono 上で動作することで、クロスプラットフォームでの動作を実現させています。
Android/iOS 端末にアプリをインストールする際、Mono も一緒にインストールされます。
そのため、Mono がインストールされることで、小さなアプリケーションではアプリのサイズが大きくなることには注意が必要です。
また、Android と iOS では実際の動作原理が少々異なります。
Android の動作原理
Android の開発では、Xamarin で C# のコードをコンパイルすると、IL(Intermediate Language)という中間言語を生成します。
そして、Mono と一緒に Android の端末にアプリをインストールし、実行時に Just-In-Time(JIT)コンパイルを実行し、ネイティブコードを生成します。
この動作は、Windows での .NET 開発と同様です。
iOS の動作原理
iOS の開発では、Apple が JIT でのコンパイルを規約で禁止しているため、Xamarin で C# のコンパイルを行った後、Xcode でネイティブコードに事前にコンパイルします(AOTコンパイル)。
ネイティブコードになったものをアプリとして、iOS の端末にインストールします。
この動作原理のために、iOS の開発では Mac が必須になるという訳ですね。