回答:
更新:2年前にこの回答を書いてから、Androidで実行できるようにMonoを製品化しました。この作業には、MonoからAndroidへの移植、Visual Studioとの統合、MacおよびWindowsでのMonoDevelop用のプラグインの構築、Java Android APIの.NET言語への公開など、いくつかのステップが含まれていました。これはhttp://monodroid.netで入手できます。
Android上のMonoは、Mono 2.10ランタイムに基づいており、デフォルトでC#4.0コンパイラーで4.0プロファイルになり、Monoの新しいSGenガベージコレクションエンジンと、JavaとMonoでGCを実行する新しい分散ガベージコレクションシステムを使用します。
以下のリンクは、2009年1月の時点でAndroid上のMonoを反映しています。私は歴史的な文脈のためにそれらを保持しました
Koushik DuttaとMarc Crichtonのおかげで、MonoがAndroidで動作するようになりました。
ここで実行されているビデオを見ることができます:http : //www.koushikdutta.com/2009/01/mono-on-android-with-gratuitous-shaky.html
また、Monoを自分でビルドするための手順は、こちらから入手できます。http://www.koushikdutta.com/2009/01/building-mono-for-android.html
MonoのJITとDalvikのインタープリターを比較するベンチマークをここで取得できます:http : //www.koushikdutta.com/2009/01/dalvik-vs-mono.html
そしてもちろん、Monoで事前設定されたイメージをここで取得できます(使用方法の詳細については、投稿の下部に移動してください):http : //www.koushikdutta.com/2009/01/building-mono-for- android.html
はい、それは可能であり、それほど難しくはありません。この時点で最初に必要なのは、MSILをDalvikバイトコードに変換する何らかのコンバーターです。どちらの形式もオープンソースであり、十分に文書化されているため、問題はありません。
したがって、C#またはVB.NETでAndroidアプリケーションを作成することは可能です。問題となるのは、.NETフレームワークの標準ライブラリがどれだけサポートされるかです。しかし、それは別の問題です。
オスカー・レイエスは書きました:
グーグルが.netに興味を持っていれば、Androidが最初の段階にあるときに何かをデザインするだろうと確信しています。私が言っていることは、彼らが興味がないということではありません。たぶんmmm hhhh 10歳でしょう。
実際、彼らがすでに設計したものは、Javaおよび.NETと非常に互換性があります。
彼らは一度にすべてを行うことはできませんが、Android SDKを見ると、dxというツールがあります。このツールは、JavaバイトコードをDalvikバイトコードに変換するため、Javaで記述されたプログラムをAndroidで今すぐに簡単に実行できます。.NETにも同じツールが必要です。
.NETとJavaの類似性を考えると、それは本当に時間の問題です。
ddimitrovは書きました:
.Net-> Java-> Dalvikの変換は今でも行うことができますが(http://dev.mainsoft.com/)、.Netライブラリーの不足を過小評価していると思います。もちろん誰かがMonoを移植することはできますが、それは間違いなく簡単なことではありません。
Monoを移植する必要はありません。AndroidにはすでにVMといくつかの基本APIがあります。必要なものはすべて、CIL-> DalvikコンバーターとAndroid API用の小さな.NETラッパー(そしておそらくいくつかの標準.NETクラスのいくつかの基本的な実装)です。それでおしまい。
更新: .NETはすでにAndroidで動作します- 上記のMonodroid(http://monodroid.net)という製品が必要です。
Miguel de Icaza は2010年2月17日に彼のブログで、MonoDroidと呼ばれるAndroid向けのmonoの開発を開始すると発表しました。
これは、iPhoneのMonoTouchに似ていますが、Android向けです。
Android UIへのバインディングを提供するため、アプリはライブのネイティブAndroidアプリのルックアンドフィールになります。これには、Android固有のUIを記述する必要があります。
ただし、再コンパイルする必要なく、既存の下位レベルライブラリを再利用できます。
Monoの修正された移植も完全に可能です。
.NETコンパクトフレームワークがSymbian OS(http://www.redfivelabs.com/)に移植されました。「クローズド」プラットフォームとしての.NETをこのプラットフォームに移植できる場合、Androidで実行できない理由はわかりません。
私の意見では、CLIバイトコードをDalvikに変換し、コレクションやファイルアクセスなどのコア機能のラッパークラスを作成することは技術的には可能ですが、それは大変な作業です。
しかし、Androidで実行された.NETデスクトップアプリケーションは、タッチデバイスではあまり使用できないクラシックなWindowsのようなGUIを持っているため、異質であると感じます。一方、AndroidのようなGUIを.NETでコーディングする場合は、別のラッパーセットが必要になります(ラッピングは、上記のラッパーとは逆の方法であることに注意してください)。
.NETモバイルアプリケーションがAndroidでネイティブに感じるかどうかはわかりませんが、そうではないと思います。
多分あなたは別のアプローチに興味があるでしょう:あなたはJava言語であなたのアプリケーションを書くことができます。その後、Microsoft J#を使用して.NETにコンパイルし(廃止されていることはわかっていますが、ダウンロードして使用できます)、Androidで同じJavaコードを使用できます。繰り返しますが、これはコアクラス(ビジネスロジック)のためのものであり、再びGUIを作成する必要があります。J2MEにもタグを付けることができます。これは、.NETを使用している場合はできません。
.NET for Androidは、私にとっては現実的な可能性のようです。MicrosoftがAndroid向けの適切なSilverlightをリリースするというニュースがあります。Appleを起動することによるMicrosoftの利点を過小評価しないでください。より速く、より機能が豊富で、開発ライフサイクルがより速いスマートフォン、印象的なハードウェア、標準でインストール可能なFlashおよびSilverlight。
マイクロソフトはAndroidの改善に既得の関心を持っています。同時に、Android上のSilverlightのアプリケーションは開発され、マルチタッチやGPSなどを備えたWindows Phone 7 OSでも動作します。