Odpowiedzi:
Aktualizacja : odkąd napisałem tę odpowiedź dwa lata temu, wyprodukowaliśmy Mono do uruchamiania na Androidzie. Praca obejmowała kilka kroków: przeniesienie Mono na Androida, integrację z Visual Studio, budowanie wtyczek dla MonoDevelop na Macu i Windows oraz udostępnienie interfejsów API Java Androida na języki .NET. Jest to teraz dostępne na stronie http://monodroid.net
Mono na Androidzie jest oparte na środowisku wykonawczym Mono 2.10 i domyślnie ma profil 4.0 z kompilatorem C # 4.0 i korzysta z nowego silnika śmieciarza SGen Mono, a także naszego nowego rozproszonego systemu śmieciowego, który wykonuje GC w Javie i Mono.
Poniższe linki odzwierciedlają Mono na Androidzie w styczniu 2009 roku. Zachowałem je w kontekście historycznym
Mono działa teraz na Androidzie dzięki pracy Koushika Dutty i Marca Crichtona.
Możesz zobaczyć wideo z tego uruchomionego tutaj: http://www.koushikdutta.com/2009/01/mono-on-android-with-gratuitous-shaky.html
Instrukcje dotyczące samodzielnego budowania Mono można znaleźć tutaj: http://www.koushikdutta.com/2009/01/building-mono-for-android.html
Możesz porównać test porównawczy JIT Mono z tłumaczem Dalvika tutaj: http://www.koushikdutta.com/2009/01/dalvik-vs-mono.html
I oczywiście możesz uzyskać wstępnie skonfigurowany obraz z Mono tutaj (przejdź do dolnej części postu, aby uzyskać szczegółowe informacje na temat korzystania z tego): http://www.koushikdutta.com/2009/01/building-mono-for- android.html
Tak, będzie to możliwe i nie będzie takie trudne. W tym momencie wszystko, czego potrzeba, to jakiś konwerter, który zmieni MSIL w kod bajtowy Dalvik . Ponieważ oba formaty są otwarte i dobrze udokumentowane, nie będzie z tym żadnego problemu.
Tak więc pisanie aplikacji na Androida w C # lub VB.NET będzie możliwe, pytanie dotyczy tego, ile standardowych bibliotek .NET Framework będzie obsługiwanych. Ale to kolejny problem.
Oscar Reyes napisał:
Jestem prawie pewien, że jeśli Google przejmie JAKIEKOLWIEK zainteresowanie domeną .net, zaprojektowaliby coś, gdy Android był na pierwszych etapach, a nie teraz na etapie produkcji. Nie mam na myśli, że to niemożliwe, mówię, że nie są zainteresowani. Może w mmm hhhh 10 lat.
W rzeczywistości to, co już zaprojektowali, jest bardzo kompatybilne z Javą i .NET
Nie mogą zrobić wszystkiego naraz, ale jeśli spojrzysz na zestaw SDK systemu Android, istnieje narzędzie o nazwie dx . To narzędzie konwertuje kod bajtowy Java na kod bajtowy Dalvik, więc innymi słowy, możesz dziś uruchamiać programy napisane w Javie na Androida. Teraz to samo narzędzie jest potrzebne do .NET.
Biorąc pod uwagę, jak podobne są .NET i Java, to naprawdę kwestia czasu.
ddimitrov napisał:
Tłumaczenie .Net-> Java-> Dalvik można wykonać nawet teraz ( http://dev.mainsoft.com/ ), ale myślę, że nie doceniasz braku bibliotek .Net. Oczywiście ktoś może przenieść Mono, ale z pewnością nie jest to trywialny wysiłek.
Nie trzeba przenosić Mono. Android ma już maszynę wirtualną i podstawowe API. Wszystko, czego potrzeba, to konwerter CIL-> Dalvik i małe opakowanie .NET dla interfejsu API Androida (i może podstawowa implementacja niektórych standardowych klas .NET). Otóż to.
Aktualizacja: .NET działa już na Androidzie - potrzebujesz produktu o nazwie Monodroid ( http://monodroid.net ), jak wspomniano powyżej.
Miguel de Icaza ogłosił na swoim blogu 17 lutego 2010 r., Że rozpoczynają pracę nad mono dla Androida, który będzie nazywał się MonoDroid.
Będzie to podobne do MonoTouch na iPhonie, ale dla Androida.
Zapewni to powiązanie z interfejsem Android, dzięki czemu aplikacje będą wyglądały i działały na żywo natywne aplikacje na Androida. Będzie to wymagało napisania interfejsu użytkownika przeznaczonego dla systemu Android.
Będziesz jednak mógł ponownie wykorzystać istniejące biblioteki niższego poziomu bez konieczności ponownej kompilacji.
Ponieważ jest to jeden z pierwszych linków w Google podczas wyszukiwania wsparcia dla Androida i .net, wystarczy opublikować to tutaj.
Projekt mono pracuje nad pakietem SDK do opracowywania aplikacji na Androida przy użyciu języków CIL, takich jak C #. Minusem jest to, że będzie to produkt komercyjny. monodroid
MonoDroid jest niedostępny do podglądu. Myślę, że to wypełni lukę. Jednak MonoDroid może być kosztowną opcją rozwoju. Ich inne narzędzia programistyczne kosztują od 199 USD do 4000 USD (narzędzie deweloperskie MonoTouch ... iPhone ... kosztuje od 399 USD do 3999 USD). Jeśli ludzie opracowują aplikacje za pomocą tych narzędzi, potrzebują bardzo silnego modelu biznesowego, aby uzyskać zwroty.
Zmodyfikowany port Mono jest również całkowicie możliwy.
.NET Compact Framework został przeniesiony do Symbian OS ( http://www.redfivelabs.com/ ). Jeśli .NET jako „zamknięta” platforma może być przeniesiona na tę platformę, nie widzę żadnego powodu, dla którego nie można tego zrobić dla Androida.
.NET i Mono to świetne środowiska z wieloma narzędziami i doskonałą bazą umiejętności osób, które potrafią z nich korzystać.
Myślę, że Mono ma możliwość stać się wybranym mobilnym międzyplatformowym środowiskiem programistycznym, ponieważ jest to jedyna alternatywa dla Objective-C na iPhonie i powinna być przenośna na Androida, a .NET jest już na Windows Mobile.
Naprawdę mam nadzieję, że zobaczę solidną implementację Mono na Androidzie, z opakowaniami dla interfejsu API Androida jak w Monotouch, i byłbym gotowy za to zapłacić, ponieważ nie jestem w stanie zrobić tego sam.
Bardziej prawdopodobne jest, że zobaczysz implementację Silverlight na Androida. Przedstawiciel firmy Microsoft potwierdził, że jest to możliwe, w przeciwieństwie do iPhone'a, w którym przedstawiciel stwierdził, że jest to problematyczne.
Ale możliwa jest wersja .NET Framework. Po prostu potrzebuję kogoś, kto się tym tak przejmuje :)
Ale tak naprawdę przejście z C # na Javę nie jest wielkim problemem, a biorąc pod uwagę drastyczne różnice między dwiema platformami (PC vs. G1), wydaje się mało prawdopodobne, abyś był w stanie poradzić sobie z jedną bazą kodu dla dowolnej aplikacji, która chciałeś uruchomić oba.
Moim zdaniem technicznie możliwe byłoby przekonwertowanie kodu bajtowego CLI na Dalvik i napisanie klas opakowań dla niektórych podstawowych funkcji, takich jak kolekcje, dostęp do plików itp., Nawet to byłoby ciężką pracą.
Ale aplikacja komputerowa .NET uruchomiona na Androidzie wydawałaby się obca, ponieważ miałaby klasyczny GUI podobny do Windows, który nie jest zbyt użyteczny na urządzeniu dotykowym. Z drugiej strony, jeśli miałbyś kodować GUI podobny do Androida w .NET, potrzebowałbyś innego zestawu opakowań (zauważ, że zawijanie jest odwrotnie niż w przypadku wspomnianych wyżej opakowań).
Nie jestem pewien, czy aplikacja mobilna .NET byłaby natywna na Androidzie, ale sądzę, że nie.
Może interesuje Cię inne podejście: możesz napisać swoją aplikację w języku Java. Następnie możesz go skompilować do platformy .NET za pomocą Microsoft J # (wiem, że został wycofany, ale nadal możesz go pobrać i używać) i używać tego samego kodu Java na Androidzie. Ponownie, dotyczy to podstawowych klas, czyli logiki biznesowej, i znowu musielibyście pisać ciągłe GUI. Może możesz także przetłumaczyć J2ME, czego nie będziesz w stanie zrobić, jeśli używasz platformy .NET.
.NET dla Androida wydaje mi się prawdziwą możliwością. Są wiadomości, że Microsoft wyda odpowiednie Silverlight dla Androida - Nigdy nie lekceważ korzyści dla Microsoft za wprowadzenie bootowania w Apple. Smartfon, który jest szybszy, bogatszy w funkcje, szybszy cykl rozwoju, imponujący sprzęt, Flash i Silverlight w standardzie do zainstalowania.
Microsoft jest bardzo zainteresowany ulepszeniem Androida, a jednocześnie aplikacje zostaną opracowane dla Silverlight na Androida będzie działał również na Windows Phone 7 OS z funkcją Multi-Touch, GPS itp.