Risposte:
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
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.
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.
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
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.
Dai un'occhiata a xmlvm Penso che sia possibile. Può anche essere possibile controllare questo video
Una porta modificata di Mono è anche del tutto possibile.
.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.
.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.
È 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.
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.
.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.