Mais e mais plataformas móveis estão sendo lançadas e os SDKs estão disponíveis para desenvolvedores. Existem várias plataformas móveis disponíveis: Android, iOS, Moblin, Windows mobile 7, RIM, symbian, bada, maemo etc.
E a criação de aplicativos multiplataforma é uma dor de cabeça para os desenvolvedores. Estou procurando coisas comuns entre as plataformas que ajudarão os desenvolvedores que desejam portar aplicativos para todas as plataformas. Como quais são as diferentes resoluções de tela, métodos de entrada, suporte a gl aberto, etc., compartilhe detalhes que você conhece para qualquer plataforma.
Ou existem possibilidades, escrevendo o código em html (tipo de widget) e carregando-o no aplicativo nativo. Eu sei sobre o Android, no qual podemos adicionar a visualização da web ao aplicativo chamandosetContentView(view)
Compartilhe os detalhes da aula onde podemos adicionar a visualização html no aplicativo nativo de diferentes tipos de plataformas que você conhece.
O objetivo deste tópico é compartilhar detalhes comuns entre os desenvolvedores. marcando como wiki da comunidade.
Ferramentas e biblioteca multiplataforma
XMLVM, Codename One e iSpectrum (compilação cruzada de código Java de um aplicativo Android ou criação do zero
Phone Gap (aplicativos móveis multiplataforma)
Titanium (para construir aplicativos móveis e de desktop nativos com tecnologias da web)
Mono Touch (C # para iphone)
rhomobile - http://rhomobile.com/ amostras estão aqui: http://github.com/rhomobile/rhodes-system-api-samples
Sencha Touch - Sencha Touch é uma estrutura de aplicativo móvel HTML5 que permite desenvolver aplicativos da web que parecem nativos em dispositivos Apple iOS e Google Android touchscreen. http://www.sencha.com/products/touch/
Corona - Biblioteca de plataforma cruzada de aplicativos para iPhone / Ipad / Android. Muito incrível. http://anscamobile.com/corona/
Um guia para portar aplicativo Android existente para Windows Phone 7 http://windowsphone.interoperabilitybridges.com/articles/windows-phone-7-guide-for-iphone-application-developers
- Jquery Mobile Touch Optimized Web Framework para Smartphones e Tablets
Respostas:
Minha resposta aqui cobre algumas das limitações técnicas das ferramentas de plataforma cruzada, mas deixe-me expandir um pouco:
Acho que as ferramentas de plataforma cruzada sempre foram historicamente perdidas porque essas ferramentas têm o foco filosófico errado.
Todos os argumentos de venda para ferramentas de plataforma cruzada são os benefícios que trazem aos desenvolvedores . Eles estão convencidos de que permitem aos desenvolvedores escrever uma vez, executar em qualquer lugar. Eles estão convencidos de que permitem aos desenvolvedores expandir seu mercado sem aprender novas APIs. Eles estão convencidos de que permitem aos desenvolvedores reduzir custos e tempo de lançamento no mercado.
A ferramenta de plataforma cruzada que NÃO se vende é o benefício que trazem aos usuários finais .
O benefício para o usuário final não é um argumento de venda porque o desenvolvimento de plataforma cruzada raramente é um benefício para o usuário final. O usuário final não se importa com o quão duro o desenvolvedor teve que trabalhar para levar o produto ao mercado. Eles também não se importam em quantas plataformas o aplicativo pode ser executado quando eles não usam apenas uma plataforma. Eles apenas se preocupam se o aplicativo faz o que eles precisam no hardware em que precisam para executá-lo. A menos que eles tenham uma necessidade específica de executar o aplicativo em muitas plataformas diferentes, o fato de que isso não traz nenhum valor.
Por outro lado, os compromissos inevitáveis de fazer uma API de plataforma cruzada significam que todos os aplicativos criados pela API terão a melhor classificação B em todas as plataformas. Eles nunca serão a melhor ferramenta para usar em cada plataforma.
Tudo isso significa que, na maioria dos casos de uso, as ferramentas de plataforma cruzada fornecem ao usuário final um produto inferior em comparação com aqueles feitos com APIs específicas da plataforma. O usuário final sempre terá uma escolha melhor.
Você ganha dinheiro a longo prazo, dando aos usuários finais as ferramentas mais úteis. Se você não se concentrar filosoficamente em tornar a vida do usuário final mais fácil e produtiva, você estará condenado desde o início. Os usuários finais têm muitas opções e se sua ferramenta não for uma das melhores, você não vai fazer isso no mercado.
Você só deve usar ferramentas de plataforma cruzada se achar que "os usuários realmente se beneficiarão ao executar este aplicativo em muitas plataformas diferentes". Se você começar a olhar para as ferramentas de plataforma cruzada apenas porque elas facilitarão a sua vida (dos desenvolvedores), então você as escolheu pelo motivo errado e elas irão prejudicá-lo mais do que ajudar.
fonte
Existem várias abordagens para o desenvolvimento de plataforma cruzada em dispositivos móveis. Claro que todos eles têm limitações. Nenhuma solução consegue aproveitar todas as funcionalidades do aparelho como um aplicativo nativo.
Reutilizar código
Embora todos os sistemas operacionais móveis não usem a mesma linguagem de desenvolvimento e API, às vezes você pode compartilhar algumas classes ou código de camada lógica.
C ++, por exemplo, provavelmente pode ser reutilizado para um aplicativo iOS , para um aplicativo Android usando o NDK , para um aplicativo Symbian, uma vez que são desenvolvidos em C ++, etc.
Algumas soluções também oferecem a possibilidade de escrever o aplicativo em um idioma diferente do normalmente usado pelo dispositivo. Os mais famosos (na verdade, os únicos que conheço) são comerciais e baseados no projeto Mono (desenvolvimento C #):
Mas não tenho certeza se podemos realmente chamar isso de desenvolvimento de plataforma cruzada, uma vez que a reutilização do código é limitada dependendo do dispositivo:
E a parte da IU também permanece específica para cada dispositivo.
desenvolvimento web
Uma resposta regular ao perguntar sobre o desenvolvimento de plataforma cruzada para celulares é o desenvolvimento para web. Precisamos então de um wrapper, que usará o navegador móvel, para fazer com que pareça e se comporte como um aplicativo nativo. É assim que parte da estrutura de plataforma cruzada que veremos mais adiante funciona.
O surgimento do HTML5 traz para o desenvolvimento web funcionalidades que só poderiam ser feitas com um aplicativo nativo como geolocalização, aplicativo off-line e armazenamento local.
Podemos encontrar cada vez mais estruturas para desenvolver aplicativos da web para dispositivos móveis com uma aparência nativa, aproveitando os mais recentes padrões da web HTML5, CSS3, Js:
Mas o HTML5 ainda é muito jovem e a implementação pode variar de um navegador para outro. A maioria dos navegadores móveis padrão usa o motor WebKit (a principal exceção é o Windows mobile / telefone usando o Internet Explorer) e mesmo assim eles não suportam necessariamente as mesmas funcionalidades . O banco de dados local ainda é difícil de trabalhar e não podemos ter certeza de como ele será implementado pelos diferentes navegadores. Além disso, mesmo com HTML5, o desenvolvimento web ainda é muito limitado em comparação com um aplicativo nativo. Você não pode acessar contatos, câmera, acelerômetro, etc.
Edit: No início deste mês, o W3C emitiu alguns avisos sobre a evolução do HTML5: Artigo da ZDNet
Portanto, ele só se adequará a uma categoria limitada de aplicativos.
Estruturas multiplataforma
E então temos as estruturas de aplicativos móveis de plataforma cruzada. Com o qual você pode provavelmente desenvolver uma vez e implantar em diferentes plataformas. Essas soluções geralmente se concentram em iOS e Android e contam com o mecanismo WebKit. Eles oferecem mais interação com as funcionalidades do telefone durante o desenvolvimento com tecnologias web. Os mais conhecidos são Nitobi PhoneGap, RhoMobile Rhodes, Appcelerator Titanium. Mas muitos outros estão por aí e nem todos usam a mesma técnica como MoSync, que traduz seu código para sua própria linguagem intermediária antes de compilá-lo para a plataforma desejada.
[1]
Lembre-se de que a Apple tem uma política especial sobre aplicativos escritos para sua plataforma. Eles não parecem estar bloqueando esses aplicativos no momento, mas é uma informação que deve ser levada em consideração.Editar: a Apple mudou essa política desde 9 de setembro.fonte
Você obtém alguns pontos em comum ao implantar como um webapp (html5 como mencionado acima), mas para aplicativos nativos ricos, as APIs são completamente diferentes para os vários smartphones.
O HTML5 pode melhorar um pouco as coisas, mas para fazer coisas interessantes você precisa se tornar nativo.
Existem frameworks para smartphones de 'plataforma cruzada', como Phonegap, mas ouvi muitas coisas ruins sobre como usá-lo para um trabalho "real". (muita sobrecarga, etc)
fonte
Sim, o html5 está recebendo alguma atenção. Você também deve olhar para este consórcio e plataforma que virá no quarto trimestre. Não tenho certeza sobre o sucesso desse projeto, pois parece um grande desafio, mas aqui estão os detalhes:
Site: http://www.wholesaleappcommunity.com/default.aspx
Notícias: http://news.google.de/news/search?aq=f&pz=1&cf=all&ned=us&hl=en&q=%22Wholesale+Applications+Community%22
.
fonte
Pelo que eu sei, a maioria desses dispositivos é capaz de executar isso:
Java ME - a plataforma de aplicativos mais onipresente para dispositivos móveis
Acho que isso pode servir como bom e mau exemplo.
fonte