Google Android có bao giờ hỗ trợ .NET không? [đóng cửa]


253

Bây giờ G1 với hệ điều hành Android của Google đã có sẵn (sớm), nền tảng Android có hỗ trợ .Net không?


24
Bây giờ sẽ là một cái gì đó!
Calanus

chắc chắn quan trọng hơn, Microsoft có bao giờ chuyển .NET sang một nền tảng khác ngoài Windows không?
Kerry

Câu trả lời:


325

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


1
Chà, tôi đã nói, không phải MS cũng không phải Google mà có lẽ là Miguel và bạn đây (tôi biết đó không phải là bạn, nhưng bằng cách nào đó gần gũi) Liên kết tuyệt vời Miguel. Bạn có nghĩ rằng Google sẽ hỗ trợ điều này? Tôi có nghĩa là họ lấy cổng dưới mui xe của họ? :) Nếu tôi có thể, tôi sẽ hạ thấp câu trả lời của chính mình :)
OscarRyz

6
Uhm, đó là "chỉ" chạy trong debian chạy trên cùng một phần cứng. Theo ý kiến ​​của tôi thì không hoàn toàn chuyển sang "android", nhưng có vẻ như nó không phải là vấn đề lớn để chuyển nó hoàn toàn.
sandos

1
Tôi đang tự hỏi, đã có cuộc nói chuyện nào với Google để làm cho việc cài đặt này dễ dàng hơn chưa? Có lẽ đưa nó lên dưới dạng tải xuống miễn phí từ Thị trường? Cho phép ứng dụng .Net được đưa ra thị trường?
csauve

1
Quá tệ, nó không hoạt động với Visual Studio Express ...
Rockcoder

1
Tuyệt vời. Vui mừng khi có một câu trả lời cập nhật. +1 Miguel
Steven Evers

78

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.


Vâng, chúng tôi không bao giờ biết ... có lẽ, có lẽ ... Hãy làm cho nó 4 năm thay vì 10 ...: P
OscarRyz

16
Tôi không đồng ý. Tất cả mọi thứ bạn nói đều có thể về mặt kỹ thuật, nhưng tôi nghĩ bạn đánh giá thấp công việc cần thiết theo một mức độ lớn. Luôn luôn dễ dàng kết hợp một khái niệm bằng chứng như một từ chào được biên dịch chéo trong vài giờ. Nhưng để thiết lập các hàm bao cho tất cả các lớp là RẤT NHIỀU công việc.
Lena Schimmel

4
@Brian, video bạn đã đăng là về iPhone chứ không phải Android.
Lubos hasko

14
Chà, với mối quan hệ Java của Google, không quá ngạc nhiên khi họ không dùng .NET với điều này. Có, sử dụng Mono có thể khả thi nhưng tôi gần như chắc chắn Google sẽ tránh sử dụng .NET với sự nhiệt tình tương tự như Microsoft sẽ tránh sử dụng Linux.
Joey

2
"các công ty nhỏ sẽ không đặt cược tương lai của họ vào nó trừ khi một số công ty lớn hơn đặt một số trọng lượng đằng sau nó." Novell đã tài trợ cho nó. Và Microsoft hỗ trợ dự án phái sinh Moonlight bằng cách cung cấp bộ giải mã và bộ thử nghiệm.
sblom

23

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.


Bản beta Monodroid hiện có sẵn cho những người đăng ký chương trình beta sớm.
Damian

vâng, hiện tại nó đang ở giai đoạn thử nghiệm riêng tư, tôi đã đăng ký nhưng đến nay đã bỏ lỡ một lời mời :(
trampster

9

Có Mono cho Android, .NET framework được chuyển cho Android. Và có MonoDroid, một chồng phát triển để sử dụng C # và các API .NET cốt lõi để phát triển các ứng dụng dựa trên Android. MonoDroid Preview 1 đã được phát hành vài ngày trước.


9

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


7

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.


6

Kiểm tra này xmlvm tôi nghĩ rằng điều này là có thể. Cũng có thể kiểm tra video này


Tôi thích câu trả lời đó. Nó cho thấy điều đó là có thể, nhưng nếu bạn xem video đó, nó cũng cho thấy có bao nhiêu vấn đề vẫn đang mở để giải quyết và bao nhiêu công việc đằng sau tất cả những điều đó.
Lena Schimmel

4

Một cổng sửa đổi của Mono cũng hoàn toàn có thể.


@akdom, bạn có kinh nghiệm chuyển phần mềm từ HĐH máy tính để bàn / máy chủ sang nhúng không? Tôi có một số kinh nghiệm phát triển di động (Java và Brew) và IMHO, bạn đang đánh giá thấp nỗ lực này. Có thể là có thể, nhưng chắc chắn là không trong 3 năm tới.
ddimitrov

@ddmitrov: Câu hỏi đặt ra là liệu nền tảng Android có EVER có hỗ trợ .NET hay không, liệu nó có hoạt động trong vòng ba năm tới không. Tôi chỉ đơn thuần cho rằng vì Mono là một triển khai .NET nguồn mở nên việc xây dựng một phiên bản Android của Mono sẽ dễ dàng hơn là bắt đầu từ đầu.
akdom

2
Nó đã không mất ba năm cuối cùng. Và những người ở Xamarin có kế hoạch làm lại sau chưa đầy sáu tháng.
Justin

4

.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.


Bạn đã sử dụng khung nhỏ gọn? Tôi làm mỗi ngày tại nơi làm việc của tôi và một cổng đơn sắc dưới dạng MonoDroid sẽ tốt hơn nhiều.
trampster

4

.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 đó.


3

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.


3

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.


không, bạn sẽ không cho rằng các hình thức giành chiến thắng sẽ được chuyển, đó là một ý tưởng thực sự tồi tệ, MonoDroid sẽ có các ràng buộc với các widget UI của Android, vì vậy nó sẽ trông giống hệt như một ứng dụng Android gốc, người dùng thậm chí không biết đang chạy trên MonoDroid
trampster

Ngoài ra, CLI Bytecode cho Dalvik là một ý tưởng tồi, thời gian chạy đơn và VM đã hoạt động trên ARM, khiến nó chạy trên Android sẽ không thành vấn đề. Và xem như mono là JIT được biên dịch và Dalvik được giải thích. Chạy trên thời gian chạy đơn sẽ nhanh hơn nhiều.
trampster

2

.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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.