Câu trả lời:
Cập nhật : Vì tôi đã viết câu trả lời này hai năm trước, chúng tôi đã sản xuất Mono để chạy trên Android. Công việc bao gồm một vài bước: chuyển Mono sang Android, tích hợp nó với Visual Studio, xây dựng các plugin cho MonoDevelop trên Mac và Windows và hiển thị API Java Android sang ngôn ngữ .NET. Điều này hiện có sẵn tại http://monodroid.net
Mono trên Android dựa trên thời gian chạy Mono 2.10 và mặc định là cấu hình 4.0 với trình biên dịch C # 4.0 và sử dụng công cụ thu gom rác SGen mới của Mono, cũng như hệ thống thu gom rác phân tán mới của chúng tôi thực hiện GC trên Java và Mono.
Các liên kết dưới đây phản ánh Mono trên Android kể từ tháng 1 năm 2009, tôi đã giữ chúng cho bối cảnh lịch sử
Mono hiện hoạt động trên Android nhờ vào công việc của Koushik Dutta và Marc Crichton.
Bạn có thể xem video về nó đang chạy ở đây: http://www.koushikdutta.com/2009/01/mono-on-android-with-gratuitous-shaky.html
Và bạn có thể nhận hướng dẫn để tự xây dựng Mono tại đây: http://www.koushikdutta.com/2009/01/building-mono-for-android.html
Bạn có thể lấy điểm chuẩn so sánh phiên dịch JIT của Mono và Dalvik tại đây: http://www.koushikdutta.com/2009/01/dalvik-vs-mono.html
Và tất nhiên, bạn có thể có được một hình ảnh được cấu hình sẵn với Mono tại đây (đi đến cuối bài để biết chi tiết về việc sử dụng nó): http://www.koushikdutta.com/2009/01/building-mono-for- android.html
Vâng, nó sẽ có thể và nó sẽ không khó khăn như vậy. Tất cả những gì cần thiết tại thời điểm này để bắt đầu là một loại trình chuyển đổi nào đó sẽ biến MSIL thành mã byte Dalvik . Vì cả hai định dạng đều có nguồn mở và được ghi chép tốt, nên sẽ không có vấn đề gì với nó.
Vì vậy, việc viết các ứng dụng Android bằng C # hoặc VB.NET sẽ có thể, câu hỏi là bao nhiêu thư viện chuẩn .NET framework sẽ được hỗ trợ. Nhưng đó là một vấn đề khác.
Oscar Reyes đã viết:
Tôi khá chắc chắn nếu google nắm tay BẤT CỨ điều gì .net, họ sẽ thiết kế một cái gì đó trong khi Android đang ở giai đoạn đầu tiên, không phải bây giờ khi họ đang ở giai đoạn sản xuất. Tôi không có nghĩa là không thể, điều tôi đang nói là họ không quan tâm. Có lẽ trong mmm hhhh 10 năm.
Trên thực tế những gì họ đã thiết kế rất tương thích với Java và .NET
Họ không thể làm mọi thứ cùng một lúc, nhưng nếu bạn nhìn vào SDK Android, có một công cụ gọi là dx . Công cụ này chuyển đổi mã byte Java thành mã byte Dalvik, do đó, nói cách khác, bạn có thể chạy các chương trình được viết bằng Java trên Android mà không cần nỗ lực ngày hôm nay. Bây giờ công cụ tương tự là cần thiết cho .NET.
Xem xét mức độ tương tự của .NET và Java, đó thực sự là vấn đề thời gian.
ddimitrov đã viết:
Bản dịch .Net-> Java-> Dalvik có thể được thực hiện ngay cả bây giờ ( http://dev.mainsoft.com/ ), nhưng tôi nghĩ bạn đánh giá thấp việc thiếu các thư viện .Net. Tất nhiên ai đó có thể chuyển Mono, nhưng đó chắc chắn là một nỗ lực không hề nhỏ.
Không cần cổng Mono. Android đã có VM và một số API cơ bản. Tất cả những gì cần thiết là CIL-> Trình chuyển đổi Dalvik và trình bao bọc .NET nhỏ cho API Android (và có thể là một số triển khai cơ bản của một số lớp .NET tiêu chuẩn). Đó là nó.
Cập nhật: .NET đã hoạt động trên Android - bạn sẽ cần sản phẩm có tên Monodroid ( http://monodroid.net ) như đã nêu ở trên.
Miguel de Icaza đã thông báo trên blog của mình vào ngày 17 tháng 2 năm 2010 rằng họ đang bắt đầu làm việc trên mono cho Android sẽ được gọi là MonoDroid.
Điều này sẽ tương tự như MonoTouch trên iphone nhưng thay vào đó là Android.
Nó sẽ cung cấp ràng buộc với giao diện người dùng Android, vì vậy các ứng dụng sẽ nhìn và cảm nhận các ứng dụng Android gốc trực tiếp. Điều này sẽ yêu cầu bạn viết một giao diện người dùng cụ thể cho Android.
Tuy nhiên, bạn sẽ có thể sử dụng lại các thư viện cấp thấp hơn hiện tại mà không cần phải biên dịch lại.
Vì đây là một trong những liên kết đầu tiên trên Google khi tìm kiếm hỗ trợ cho Android và .net, nên nó chỉ phù hợp để đăng bài này ở đây.
Dự án đơn sắc đang làm việc trên SDK để phát triển các ứng dụng Android bằng các ngôn ngữ CIL như C #. Mặt trái là nó sẽ là một sản phẩm thương mại. đơn sắc
MonoDroid có sẵn để xem trước. Tôi nghĩ rằng sẽ thu hẹp khoảng cách. Tuy nhiên, MonoDroid có thể là một lựa chọn tốn kém để phát triển. Các công cụ phát triển khác của họ có giá từ 199 đến 4000 đô la (Công cụ MonoTouch .. iPhone dev ... có giá từ 399 đến 3999 đô la). Nếu mọi người phát triển ứng dụng với các công cụ này, họ cần một mô hình kinh doanh rất mạnh để thấy một số lợi nhuận.
Một cổng sửa đổi của Mono cũng hoàn toàn có thể.
.NET compact framework đã được chuyển sang hệ điều hành Symbian ( http://www.redfeelsabs.com/ ). Nếu .NET dưới dạng nền tảng 'đóng' có thể được chuyển sang nền tảng này, tôi không thể thấy bất kỳ lý do nào khiến nó không thể được thực hiện cho Android.
.NET và Mono là những môi trường tuyệt vời, với nhiều công cụ và nền tảng kỹ năng tuyệt vời của những người biết sử dụng chúng.
Tôi nghĩ Mono có cơ hội trở thành môi trường phát triển đa nền tảng di động được lựa chọn, vì chúng là lựa chọn thay thế duy nhất cho Objective-C trên iPhone và nên có thể di động lên Android và .NET đã có trên Windows Mobile.
Tôi thực sự hy vọng sẽ thấy một triển khai Mono trên Android, với các trình bao bọc cho API Android như với Monotouch, và sẽ sẵn sàng trả tiền cho nó vì tôi không có khả năng tự làm điều đó.
Bạn có nhiều khả năng thấy triển khai Android của Silverlight. Đại diện của Microsoft đã xác nhận rằng điều đó là có thể, so với iPhone nơi người đại diện nói rằng nó có vấn đề.
Nhưng một phiên bản của khung .Net là có thể. Chỉ cần ai đó quan tâm đến nó thật nhiều :)
Nhưng thực sự, việc chuyển từ C # sang Java không phải là vấn đề lớn và xem xét sự khác biệt lớn giữa hai nền tảng (PC so với G1), dường như bạn không thể có được bằng một cơ sở mã cho bất kỳ ứng dụng nào bạn muốn chạy trên cả hai.
Theo tôi, về mặt kỹ thuật, có thể chuyển đổi CLI Bytecode thành Dalvik và viết các lớp trình bao cho một số tính năng cốt lõi như Bộ sưu tập, Truy cập tệp, v.v., thậm chí nó sẽ rất khó.
Nhưng một ứng dụng máy tính để bàn .NET chạy trên Android sẽ cảm thấy xa lạ, vì nó sẽ có GUI giống như Windows cổ điển không thể sử dụng được trên thiết bị cảm ứng. Mặt khác, nếu bạn đã viết mã GUI giống như Android trong .NET, bạn sẽ cần một bộ trình bao bọc khác (lưu ý rằng gói chỉ là cách khác đối lập với trình bao bọc được đề cập ở trên).
Tôi không chắc chắn nếu một ứng dụng di động .NET sẽ cảm thấy tự nhiên trên Android, nhưng tôi đoán nó sẽ không.
Có thể bạn quan tâm đến một cách tiếp cận khác: Bạn có thể viết ứng dụng của mình bằng ngôn ngữ Java. Sau đó, bạn có thể biên dịch nó sang .NET thông qua Microsoft J # (Tôi biết nó đã bị ngưng nhưng bạn vẫn có thể tải xuống và sử dụng nó) và sử dụng cùng mã Java trên Android. Một lần nữa, đó là cho các lớp cốt lõi hay còn gọi là logic nghiệp vụ và một lần nữa bạn sẽ phải viết GUI kéo. Có lẽ bạn cũng có thể điều chỉnh J2ME, điều mà bạn sẽ không thể làm nếu bạn sử dụng .NET.
.NET cho Android có vẻ như là một khả năng thực sự đối với tôi. Có tin tức rằng Microsoft sẽ phát hành Silverlight thích hợp cho Android- Đừng bao giờ đánh giá thấp những lợi thế của Microsoft khi đưa boot vào Apple. Một điện thoại thông minh nhanh hơn, nhiều tính năng phong phú hơn, vòng đời phát triển nhanh hơn, phần cứng ấn tượng, Flash & Silverlight như một cài đặt tiêu chuẩn.
Microsoft có quyền lợi trong việc cải thiện Android, đồng thời, các ứng dụng sẽ bị lệch cho Silverlight trên Android cũng sẽ hoạt động trên HĐH Windows Phone 7 với cảm ứng đa điểm, GPS, v.v., v.v.