답변:
업데이트 : 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의 모노를 반영하므로 역사적 맥락을 유지했습니다.
Koushik Dutta와 Marc Crichton의 작업 덕분에 Mono는 이제 Android에서 작동합니다.
여기에서 실행되는 비디오를 볼 수 있습니다 : http://www.koushikdutta.com/2009/01/mono-on-android-with-gratuitous-shaky.html
그리고 여기 모노를 직접 만드는 지침을 얻을 수 있습니다 : 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 bytecode 로 변환하는 일종의 변환기입니다 . 두 형식 모두 공개 소스이며 잘 문서화되어 있으므로 아무런 문제가 없습니다.
따라서 C # 또는 VB.NET에서 Android 애플리케이션을 작성하는 것이 가능할 것입니다. 문제는 .NET 프레임 워크 표준 라이브러리가 얼마나 지원 될 것인가입니다. 그러나 그것은 또 다른 문제입니다.
오스카 레예스는 다음과 같이 썼습니다.
구글이 .net에 관심을 가지고 있다면 안드로이드가 첫 단계에 있었을 때 무언가를 디자인했을 것입니다. 지금은 프로덕션 단계에 있지 않습니다. 나는 그것이 불가능하다는 것을 의미하지는 않습니다. 제가 말하는 것은 그들이 관심이 없다는 것입니다. 아마도 10 년 후에 mmm hhh 일 것이다.
실제로 그들이 이미 디자인 한 것은 Java 및 .NET과 매우 호환 됩니다.
한 번에 모든 작업을 수행 할 수는 없지만 Android SDK를 살펴보면 dx 라는 도구가 있습니다. 이 도구는 Java 바이트 코드를 Dalvik 바이트 코드로 변환합니다. 즉, 현재 Android에서 Java로 작성된 프로그램을 손쉽게 실행할 수 있습니다. 이제 .NET에도 동일한 도구가 필요합니다.
.NET과 Java가 얼마나 유사한 지 고려하면 실제로 시간 문제입니다.
ddimitrov는 다음과 같이 썼습니다.
.Net-> Java-> Dalvik 번역은 지금도 가능합니다 ( http://dev.mainsoft.com/ ).하지만 .Net 라이브러리의 부족을 과소 평가한다고 생각합니다. 물론 누군가는 모노를 포팅 할 수 있지만 확실히 사소한 노력은 아닙니다.
모노를 포팅 할 필요가 없습니다. 안드로이드에는 이미 VM과 기본 API가 있습니다. 필요한 것은 CIL-> Dalvik 변환기와 Android API 용 소형 .NET 래퍼 (일부 표준 .NET 클래스의 기본 구현) 일뿐입니다. 그게 다야.
업데이트 : .NET은 이미 Android에서 작동 하므로 위에서 언급 한대로 Monodroid ( http://monodroid.net ) 라는 제품이 필요합니다 .
Miguel de Icaza는 2010 년 2 월 17 일 자신의 블로그 에서 MonoDroid라고하는 Android 용 모노 작업을 시작 한다고 발표했습니다 .
이것은 아이폰의 모노 터치와 비슷하지만 대신 안드로이드 용입니다.
안드로이드 UI에 바인딩을 제공하므로 앱은 라이브 네이티브 안드로이드 앱을보고 느낄 수 있습니다. 이를 위해서는 안드로이드 전용 UI를 작성해야합니다.
그러나 재 컴파일 할 필요없이 기존 하위 레벨 라이브러리를 재사용 할 수 있습니다.
Mono 의 수정 된 포트 도 전적으로 가능합니다.
.NET 컴팩트 프레임 워크는 Symbian OS ( http://www.redfivelabs.com/ ) 로 포팅되었습니다 . '폐쇄 된'플랫폼 인 .NET을이 플랫폼으로 이식 할 수 있다면 Android에서이를 수행 할 수없는 이유를 알 수 없습니다.
.NET과 Mono는 사용 방법을 알고있는 사람들을위한 많은 도구와 뛰어난 기술 기반을 갖춘 훌륭한 환경입니다.
모노는 모바일 크로스 플랫폼 개발 환경이 될 기회가 있다고 생각합니다. 이는 아이폰의 Objective-C에 대한 유일한 대안이며 Android에 이식 가능해야하며 .NET은 이미 Windows Mobile에 있습니다.
필자는 Android에서 Monotouch와 마찬가지로 Android API 용 래퍼를 사용하여 Mono의 견고한 구현을 기대하고 있으며 직접 할 수있는 입장이 아니기 때문에 지불 할 준비가되어 있습니다.
제 생각에는 CLI 바이트 코드를 Dalvik으로 변환하고 컬렉션, 파일 액세스 등과 같은 일부 핵심 기능에 대한 래퍼 클래스를 작성하는 것은 기술적으로 가능할 것입니다.
그러나 Android에서 실행되는 .NET 데스크톱 응용 프로그램은 터치 장치에서 사용할 수없는 고전적인 Windows와 같은 GUI를 갖기 때문에 외계인처럼 느껴질 것입니다. 반면에 .NET에서 Android와 유사한 GUI를 코딩하려는 경우 다른 래퍼 세트가 필요합니다 (래핑은 위에서 언급 한 래퍼와 반대되는 다른 방법이라는 점에 유의하십시오).
.NET 모바일 응용 프로그램이 Android에서 기본으로 느껴질 지 확실하지 않지만 그렇지 않을 것입니다.
다른 접근 방식에 관심이있을 수도 있습니다. Java 언어로 응용 프로그램을 작성할 수 있습니다. 그런 다음 Microsoft J #을 통해 .NET으로 컴파일하고 (단종되었지만 여전히 다운로드하여 사용할 수 있음) Android에서 동일한 Java 코드를 사용할 수 있습니다. 다시 말하지만, 이는 핵심 비즈니스 클래스, 즉 비즈니스 로직에 해당되며 다시 견인 GUI를 작성해야합니다. .NET을 사용하면 J2ME에 태그를 지정할 수 있습니다.
Android 용 .NET은 나에게 진정한 가능성처럼 보입니다. 마이크로 소프트가 안드로이드 용으로 적절한 실버 라이트를 출시 할 것이라는 소식이있다. 부팅을 애플에 넣는 것에 대한 마이크로 소프트의 이점을 결코 과소 평가하지 말라. 더 빠르고, 기능이 풍부하고, 더 빠른 개발 수명주기, 인상적인 하드웨어, 표준 설치 가능한 Flash & Silverlight 인 스마트 폰.
Microsoft는 Android 개선에 관심을 가지고 있으며, 동시에 Silverlight 용 응용 프로그램을 개발할 예정입니다. Android에서 멀티 터치, GPS 등을 사용하는 Windows Phone 7 OS에서도 작동합니다.