Google Android supporterà mai .NET? [chiuso]


253

Ora che il G1 con il sistema operativo Android di Google è ora disponibile (presto), la piattaforma Android supporterà mai .Net?


24
Ora sarebbe qualcosa!
Calanus,

sicuramente più importante, Microsoft porterà mai .NET su una piattaforma diversa da Windows?
Kerry,

Risposte:


325

Aggiornamento : da quando ho scritto questa risposta due anni fa, abbiamo prodotto Mono per funzionare su Android. Il lavoro prevedeva alcuni passaggi: il porting di Mono su Android, l'integrazione con Visual Studio, la creazione di plug-in per MonoDevelop su Mac e Windows e l'esposizione delle API Java Android ai linguaggi .NET. Questo è ora disponibile su http://monodroid.net

Mono su Android si basa sul runtime Mono 2.10 e passa automaticamente al profilo 4.0 con il compilatore C # 4.0 e utilizza il nuovo motore di raccolta dati inutili SGen di Mono, nonché il nostro nuovo sistema di raccolta dei rifiuti distribuito che esegue GC su Java e Mono.


I link sottostanti riflettono Mono su Android a partire da gennaio 2009, li ho conservati per il contesto storico

Mono ora funziona su Android grazie al lavoro di Koushik Dutta e Marc Crichton.

Puoi vederne un video in esecuzione qui: http://www.koushikdutta.com/2009/01/mono-on-android-with-gratuitous-shaky.html

E puoi ottenere le istruzioni per costruire Mono da solo qui: http://www.koushikdutta.com/2009/01/building-mono-for-android.html

È possibile ottenere un benchmark comparando il JIT di Mono e l'interprete di Dalvik qui: http://www.koushikdutta.com/2009/01/dalvik-vs-mono.html

E, naturalmente, puoi ottenere un'immagine preconfigurata con Mono qui (vai in fondo al post per i dettagli su come usarlo): http://www.koushikdutta.com/2009/01/building-mono-for- android.html


1
Bene, ho detto, non MS né Google, ma probabilmente Miguel ed eccoti qui (beh, so che non eri tu, ma in qualche modo vicino) Ottimi collegamenti Miguel. Pensi che Google lo sosterrebbe mai? Voglio dire, stanno prendendo la porta sotto il loro cappuccio? :) Se potessi, ridimensionerei la mia risposta :)
OscarRyz,

6
Uhm, questo è "solo" in esecuzione su Debian in esecuzione sullo stesso hardware. A mio avviso, non è stato eseguito il porting su "android", ma sembra che non sia un grosso problema portarlo completamente, a quanto pare.
sandos,

1
Mi chiedo, c'è stato qualche colloquio con Google per semplificare l'installazione? Forse metterlo come download gratuito dal mercato? Consentire l'immissione sul mercato di app .Net?
csauve,

1
Peccato che non funzioni con Visual Studio Express ...
Rockcoder,

1
Eccezionale. Sono contento di vedere una risposta aggiornata. +1 Miguel
Steven Evers,

78

Sì, sarà possibile e non sarà così difficile. Tutto ciò che è necessario a questo punto per iniziare è una sorta di convertitore che trasformerà MSIL in bytecode Dalvik . Poiché entrambi i formati sono di origine aperta e ben documentati, non ci saranno problemi.

Quindi, scrivere applicazioni Android in C # o VB.NET sarà possibile, la domanda è: quante librerie standard di .NET framework saranno supportate. Ma questo è un altro problema.

Oscar Reyes ha scritto:

Sono abbastanza sicuro che se Google mostrasse QUALSIASI interesse per .net, avrebbero progettato qualcosa mentre Android era nelle prime fasi, non ora quando sono in fase di produzione. Non voglio dire che non sia possibile, quello che sto dicendo è che non sono interessati. Magari in mmm hhhh 10 anni.

In realtà ciò che hanno già progettato è molto compatibile con Java e .NET

Non possono fare tutto in una volta, ma se guardi in Android SDK, c'è uno strumento chiamato dx . Questo strumento converte il bytecode Java nel bytecode Dalvik, quindi in altre parole, è possibile eseguire programmi scritti in Java su Android senza sforzo oggi. Ora lo stesso strumento è necessario per .NET.

Considerando quanto sono simili .NET e Java, è davvero una questione di tempo.

ddimitrov ha scritto:

La traduzione .Net-> Java-> Dalvik può essere eseguita anche adesso ( http://dev.mainsoft.com/ ), ma penso che tu sottovaluti la mancanza di librerie .Net. Ovviamente qualcuno può eseguire il porting di Mono, ma è sicuramente uno sforzo non banale.

Non è necessario eseguire il porting di Mono. Android ha già VM e alcune API di base. Tutto ciò che serve è il convertitore CIL-> Dalvik e un piccolo wrapper .NET per l'API Android (e forse qualche implementazione di base di alcune classi .NET standard). Questo è tutto.

Aggiornamento: .NET funziona già su Android: è necessario un prodotto chiamato Monodroid ( http://monodroid.net ) come indicato sopra.


Sì, non lo sappiamo mai ... forse, forse ... Beh, fallo 4 anni invece di 10 ...: P
OscarRyz,

16
Non sono d'accordo Tutto ciò che dici è tecnicamente possibile, ma penso che tu sottovaluti il ​​lavoro necessario per un ordine di grandezza. È sempre facile mettere insieme una bozza di prova come una parola di saluto incrociata in poche ore. Ma installare wrapper per tutte le classi è MOLTO lavoro.
Lena Schimmel,

4
@Brian, il video che hai pubblicato riguarda iPhone non Android.
Lubos Hasko,

14
Bene, data l'affinità Java di Google non è troppo sorprendente che non abbiano optato per .NET con questo. Sì, l'uso di Mono potrebbe essere fattibile, ma sono quasi sicuro che Google eviterebbe di usare .NET con zelo simile a quello che Microsoft eviterebbe di usare Linux.
Joey,

2
"le piccole aziende non scommetteranno il loro futuro su di esso a meno che alcune più grandi non ci mettano un po 'di peso". Novell lo sponsorizza già. E Microsoft supporta il progetto derivato Moonlight sia fornendo codec che suite di test.
sblom,

23

Miguel de Icaza è annunciato sul suo blog il 17 febbraio 2010 che stanno iniziando a lavorare su mono per Android che si chiamerà MonoDroid.

Questo sarà simile a MonoTouch su iPhone ma per Android invece.

Fornirà l'associazione all'interfaccia utente Android, quindi le app appariranno e sentiranno app Android native dal vivo. Ciò richiederà di scrivere un'interfaccia utente specifica per Android.

Sarai comunque in grado di riutilizzare le librerie di livello inferiore esistenti senza la necessità di ricompilare.


La beta Monodroid è ora disponibile per le persone che si sono iscritte presto al programma beta.
Damian,

sì, è attualmente in beta privata, a cui mi sono
iscritto

9

C'è Mono per Android, il framework .NET portato per Android. E c'è MonoDroid, uno stack di sviluppo per l'utilizzo di C # e le principali API .NET per lo sviluppo di applicazioni basate su Android. L'anteprima 1 di MonoDroid è stata rilasciata un paio di giorni fa.


9

Dal momento che questo è uno dei primi link su Google quando si cerca il supporto per Android e .net, è giusto postarlo qui.

Il progetto mono sta lavorando su un SDK per sviluppare applicazioni Android usando linguaggi CIL come C #. Il lato negativo è che sarà un prodotto commerciale. MonoDroid


7

MonoDroid è disponibile per l'anteprima. Penso che colmerà il divario. Tuttavia, MonoDroid potrebbe essere un'opzione costosa per lo sviluppo. I loro altri strumenti di sviluppo costano tra $ 199 e $ 4000 (lo strumento di sviluppo MonoTouch .. iPhone ha un prezzo compreso tra $ 399 e $ 3999). Se le persone sviluppano app con questi strumenti, hanno bisogno di un modello di business molto forte per vedere alcuni ritorni.


6

Dai un'occhiata a xmlvm Penso che sia possibile. Può anche essere possibile controllare questo video


Mi piacciono le risposte. Dimostra che è possibile, ma se guardi quel video, mostra anche quanti problemi sono ancora aperti da risolvere e quanto lavoro c'è dietro tutto ciò.
Lena Schimmel,

4

Una porta modificata di Mono è anche del tutto possibile.


@akdom, hai esperienza con il porting di software dal sistema operativo desktop / server a quello incorporato? Ho una certa esperienza di sviluppo mobile (Java e Brew) e IMHO, stai sottovalutando gravemente lo sforzo. Potrebbe essere possibile, ma sicuramente non nei prossimi 3 anni.
ddimitrov,

@ddmitrov: La domanda era se la piattaforma Android con EVER supportasse .NET, non se lo farà entro i prossimi tre anni. Stavo semplicemente ipotizzando che, poiché Mono è un'implementazione open source di .NET, sarebbe stato più semplice costruire una versione Android di Mono piuttosto che iniziare da zero.
Akdom,

2
Non ci sono voluti tre anni alla fine. E la gente di Xamarin ha intenzione di farlo di nuovo in meno di sei mesi.
Giustino,

4

.NET compact framework è stato portato su Symbian OS ( http://www.redfivelabs.com/ ). Se .NET come piattaforma 'chiusa' può essere portato su questa piattaforma, non vedo alcun motivo per cui non possa essere fatto per Android.


Hai usato il framework compatto? Faccio ogni giorno al mio lavoro e una porta mono sotto forma di MonoDroid sarà molto meglio.
trampster

4

.NET e Mono sono ambienti eccezionali, con molti strumenti e un'eccellente base di competenze di persone che sanno come usarli.

Penso che Mono abbia l'opportunità di essere l'ambiente di sviluppo mobile multipiattaforma preferito, visto che sono l'unica alternativa a Objective-C su iPhone e dovrebbero essere portatili su Android e .NET è già su Windows Mobile.

Spero davvero di vedere una solida implementazione di Mono su Android, con involucri per l'API Android come con Monotouch, e sarei pronto a pagare perché non sono in grado di farlo da solo.


3

È più probabile che tu veda un'implementazione Android di Silverlight. Il rappresentante Microsoft ha confermato che è possibile, rispetto all'iPhone in cui il rappresentante ha dichiarato che era problematico.

Ma è possibile una versione del framework .Net. Ho solo bisogno che qualcuno se ne occupi così tanto :)

Ma davvero, passare da C # a Java non è un grosso problema e considerando le drastiche differenze tra le due piattaforme (PC vs G1) sembra improbabile che tu possa cavartela con una base di codice per qualsiasi app che volevi correre su entrambi.


3

A mio avviso, sarebbe tecnicamente possibile convertire il Bytecode CLI in Dalvik e scrivere classi wrapper per alcune funzionalità principali come raccolte, accesso ai file, ecc., Anche se sarebbe un duro lavoro.

Ma un'applicazione desktop .NET eseguita su Android sembrerebbe aliena, poiché avrebbe una classica interfaccia grafica simile a Windows che non è molto utilizzabile su un dispositivo touch. Se, d'altra parte, dovessi codificare una GUI simile ad Android in .NET, avresti bisogno di un altro set di wrapper (nota che il wrapping è esattamente l'opposto rispetto ai wrapper menzionati sopra).

Non sono sicuro se un'applicazione mobile .NET si sentirebbe nativa su Android, ma immagino che non lo farebbe.

Forse sei interessato a un altro approccio: puoi scrivere la tua applicazione in linguaggio Java. Puoi quindi compilarlo in .NET tramite Microsoft J # (so che è fuori produzione ma puoi comunque scaricarlo e usarlo) e utilizzare lo stesso codice Java su Android. Ancora una volta, questo è per le classi principali, ovvero la logica aziendale, e di nuovo dovresti scrivere GUI di rimorchio. Forse puoi anche usare J2ME, cosa che non sarai in grado di fare se usi .NET.


no, non si suppone che il porting delle forme di vincita verrebbe portato, il che è una pessima idea, MonoDroid avrà dei collegamenti con i widget dell'interfaccia utente Android, quindi sembrerà esattamente come un'app Android nativa, l'utente non deve nemmeno saperlo gira su MonoDroid
trampster il

Anche un Bytecode CLI per Dalvik è una cattiva idea, il runtime mono e la VM funzionano già su ARM, facendolo funzionare su Android non sarà un problema. E visto che mono è JIT compilato e Dalvik viene interpretato. L'esecuzione sul runtime mono sarà molto più veloce.
trampster

2

.NET per Android mi sembra una reale possibilità. Ci sono notizie secondo cui Microsoft rilascerà Silverlight corretto per Android: non sottovalutare mai i vantaggi di Microsoft per l'avvio di Apple. Uno smartphone che è più veloce, ricco di funzionalità, ciclo di sviluppo più rapido, hardware impressionante, Flash e Silverlight di serie installabili.

Microsoft ha interesse a migliorare Android e, allo stesso tempo, le applicazioni saranno sviluppate per Silverlight su Android funzionerà anche su Windows Phone 7 OS con multi-touch, GPS, ecc., Ecc.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.