Respostas:
Atualização : desde que escrevi esta resposta há dois anos, nós produzimos o Mono para rodar no Android. O trabalho incluiu algumas etapas: transportar o Mono para o Android, integrá-lo ao Visual Studio, criar plugins para o MonoDevelop no Mac e Windows e expor as APIs do Java Android para as linguagens .NET. Já está disponível em http://monodroid.net
O Mono no Android é baseado no tempo de execução do Mono 2.10 e o padrão é o perfil 4.0 com o compilador C # 4.0 e usa o novo mecanismo de coleta de lixo SGen da Mono, bem como nosso novo sistema de coleta de lixo distribuído que executa GC em Java e Mono.
Os links abaixo refletem o Mono no Android em janeiro de 2009, eu os guardei para o contexto histórico
O Mono agora funciona no Android, graças ao trabalho de Koushik Dutta e Marc Crichton.
Você pode ver um vídeo dele sendo executado aqui: http://www.koushikdutta.com/2009/01/mono-on-android-with-gratuitous-shaky.html
E você pode obter as instruções para criar o Mono você mesmo aqui: http://www.koushikdutta.com/2009/01/building-mono-for-android.html
Você pode obter uma referência comparando o JIT da Mono contra o intérprete Dalvik aqui: http://www.koushikdutta.com/2009/01/dalvik-vs-mono.html
E, é claro, você pode obter uma imagem pré-configurada com Mono aqui (consulte a parte inferior da postagem para obter detalhes sobre como usá-la): http://www.koushikdutta.com/2009/01/building-mono-for- android.html
Sim, será possível e não será tão difícil. Para começar, tudo o que é necessário neste momento é algum tipo de conversor que transformará o MSIL em bytecode Dalvik . Como os dois formatos são de código aberto e bem documentados, não haverá nenhum problema.
Portanto, é possível escrever aplicativos Android em C # ou VB.NET; a questão é quanto das bibliotecas padrão do .NET Framework serão suportadas. Mas isso é outra questão.
Oscar Reyes escreveu:
Tenho certeza de que, se o Google entregar QUALQUER interesse em .net, eles projetariam algo enquanto o Android estivesse nos primeiros estágios, não agora quando estão em estágios de produção. Não quero dizer que não seja possível, o que estou dizendo é que eles não estão interessados. Talvez em mmm hhhh 10 anos.
Na verdade, o que eles já criaram é muito compatível com Java e .NET
Eles não podem fazer tudo de uma vez, mas se você procurar no Android SDK, existe uma ferramenta chamada dx . Essa ferramenta converte o bytecode Java no bytecode Dalvik; portanto, em outras palavras, você pode executar programas escritos em Java no Android sem nenhum esforço hoje. Agora, a mesma ferramenta é necessária para o .NET.
Considerando como .NET e Java são semelhantes, é realmente uma questão de tempo.
ddimitrov escreveu:
A tradução .Net-> Java-> Dalvik pode ser feita ainda agora ( http://dev.mainsoft.com/ ), mas acho que você subestima a falta de bibliotecas .Net. É claro que alguém pode portar Mono, mas é definitivamente um esforço não trivial.
Não há necessidade de portar Mono. O Android já possui VM e alguma API básica. Tudo o que é necessário é o conversor CIL-> Dalvik e o minúsculo wrapper .NET para API do Android (e talvez alguma implementação básica de algumas classes .NET padrão). É isso aí.
Atualização: o .NET já funciona no Android - você precisará do produto Monodroid ( http://monodroid.net ), conforme indicado acima.
Miguel de Icaza anunciou em seu blog no dia 17 de fevereiro de 2010 que eles estão começando a trabalhar em mono para android, que será chamado MonoDroid.
Isso será semelhante ao MonoTouch no iPhone, mas no Android.
Ele fornecerá ligação à interface do usuário do Android, para que os aplicativos tenham a aparência de aplicativos Android nativos ao vivo. Isso exigirá que você escreva uma interface do usuário específica do Android.
No entanto, você poderá reutilizar as bibliotecas existentes de nível inferior sem a necessidade de recompilar.
O MonoDroid está disponível para visualização. Eu acho que isso preencherá a lacuna. No entanto, o MonoDroid pode ser uma opção dispendiosa para o desenvolvimento. Suas outras ferramentas de desenvolvimento custam entre US $ 199 e US $ 4000 (a ferramenta de desenvolvimento para iPhone do MonoTouch .. custa entre US $ 399 e US $ 3999). Se as pessoas desenvolvem aplicativos com essas ferramentas, precisam de um modelo de negócios muito forte para obter retornos.
Uma porta modificada do Mono também é totalmente possível.
A estrutura compacta do .NET foi portada para o Symbian OS ( http://www.redfivelabs.com/ ). Se o .NET como plataforma 'fechada' puder ser portado para essa plataforma, não vejo motivo para que isso não possa ser feito para o Android.
.NET e Mono são ótimos ambientes, com muitas ferramentas e uma excelente base de habilidades de pessoas que sabem usá-las.
Acho que o Mono tem a oportunidade de ser o ambiente de desenvolvimento de plataforma cruzada preferido, visto que eles são a única alternativa ao Objective-C no iPhone e devem ser portáteis para o Android, e o .NET já está no Windows Mobile.
Espero realmente ver uma implementação sólida do Mono no Android, com invólucros para a API do Android e com o Monotouch, e estaria preparado para pagar por isso, já que não estou em condições de fazer isso sozinho.
É mais provável que você veja uma implementação Android do Silverlight. O representante da Microsoft confirmou que é possível, contra o iPhone, onde o representante disse que era problemático.
Mas uma versão da estrutura .Net é possível. Só preciso de alguém para se preocupar tanto com isso :)
Mas, realmente, migrar de C # para Java não é um problema e, considerando as diferenças drásticas entre as duas plataformas (PC vs. G1), parece improvável que você consiga se familiarizar com uma base de código para qualquer aplicativo que você queria rodar em ambos.
Na minha opinião, seria tecnicamente possível converter o Bytecode da CLI em Dalvik e escrever classes de wrapper para alguns recursos principais, como coleções, acesso a arquivos, etc., mesmo que fosse um trabalho árduo.
Mas um aplicativo de desktop .NET executado no Android pareceria estranho, pois teria uma GUI clássica do tipo Windows, que não é muito utilizável em um dispositivo de toque. Se, por outro lado, você codificasse uma GUI semelhante ao Android no .NET, seria necessário outro conjunto de wrappers (observe que o empacotamento é exatamente o contrário dos invólucros mencionados acima).
Não tenho certeza se um aplicativo móvel .NET pareceria nativo no Android, mas acho que não.
Talvez você esteja interessado em outra abordagem: você pode escrever seu aplicativo na linguagem Java. Em seguida, você pode compilá-lo no .NET via Microsoft J # (eu sei que ele foi descontinuado, mas você ainda pode fazer o download e usá-lo) e usar o mesmo código Java no Android. Novamente, isso é para as classes principais, também conhecidas como lógica de negócios, e novamente você precisa escrever GUIs de reboque. Talvez você também possa usar o J2ME, o que você não poderá fazer se usar o .NET.
O .NET para Android parece uma possibilidade real para mim. Há notícias de que a Microsoft lançará o Silverlight adequado para Android - nunca subestime as vantagens da Microsoft para colocar a inicialização na Apple. Um smartphone que é mais rápido, mais rico em recursos, ciclo de vida de desenvolvimento mais rápido, hardware impressionante, Flash e Silverlight como instalável padrão.
A Microsoft tem um grande interesse em melhorar o Android e, ao mesmo tempo, os aplicativos serão redirecionados para o Silverlight no Android e também funcionarão no sistema operacional Windows Phone 7 com multi-touch, GPS, etc., etc.