Se están lanzando cada vez más plataformas móviles y los sdk están disponibles para los desarrolladores. Hay varias plataformas móviles disponibles: Android, iOS, Moblin, Windows Mobile 7, RIM, symbian, bada, maemo, etc.
Y hacer aplicaciones multiplataforma es un dolor de cabeza para los desarrolladores. Estoy buscando cosas comunes en las plataformas que ayuden a los desarrolladores que quieran portar la aplicación a todas las plataformas. Como cuáles son las resoluciones de pantalla de diferencia, métodos de entrada, soporte de gl abierto, etc., comparta los detalles que conoce para cualquiera de las plataformas.
O hay posibilidades, escribiendo código en html (tipo de cosa de widget) y cargándolo en la aplicación nativa. Sé sobre Android, en el que podemos agregar la vista web a la aplicación llamandosetContentView(view)
Comparta los detalles de la clase donde podemos agregar la vista html en la aplicación nativa de diferentes tipos de plataformas que conoce.
El propósito de este hilo es compartir detalles comunes entre desarrolladores. marcando como comunidad wiki.
Biblioteca y herramientas multiplataforma
XMLVM, Codename One e iSpectrum (compilación cruzada de código Java desde una aplicación de Android o creación de una desde cero
Phone Gap (aplicaciones móviles multiplataforma)
Titanium (para crear aplicaciones nativas de escritorio y móviles con tecnologías web)
Mono Touch (C # para iphone)
rhomobile - http://rhomobile.com/ Las muestras están aquí: http://github.com/rhomobile/rhodes-system-api-samples
Sencha Touch: Sencha Touch es un marco de aplicación móvil HTML5 que le permite desarrollar aplicaciones web que se ven y se sienten nativas en dispositivos con pantalla táctil Apple iOS y Google Android. http://www.sencha.com/products/touch/
Corona - Biblioteca multiplataforma de aplicaciones para Iphone / Ipad / Android. Demasiado increíble. http://anscamobile.com/corona/
Una guía para migrar la aplicación de Android existente a Windows Phone 7 http://windowsphone.interoperabilitybridges.com/articles/windows-phone-7-guide-for-iphone-application-developers
- Marco web optimizado para dispositivos táctiles de Jquery Mobile para teléfonos inteligentes y tabletas
Respuestas:
Mi respuesta aquí cubre algunas de las limitaciones técnicas de las herramientas de plataformas cruzadas, pero permítanme expandirme un poco:
Creo que las herramientas multiplataforma históricamente siempre han sido también rans porque tales herramientas tienen un enfoque filosófico equivocado.
Todos los puntos de venta de las herramientas multiplataforma son los beneficios que aportan a los desarrolladores . Están convencidos de que permiten a los desarrolladores escribir una vez y ejecutar en cualquier lugar. Se venden con la idea de que permiten a los desarrolladores expandir su mercado sin aprender nuevas API. Se venden con la idea de que permiten a los desarrolladores reducir el costo y el tiempo de comercialización.
Lo que las herramientas de plataforma cruzada NO se venden es el beneficio que brindan a los usuarios finales .
El beneficio para el usuario final no es un argumento de venta porque el desarrollo multiplataforma rara vez es un beneficio para el usuario final. Al usuario final no le importa cuánto tuvo que trabajar el desarrollador para llevar el producto al mercado. Tampoco les importa en cuántas plataformas se puede ejecutar la aplicación cuando no usan una sola plataforma. Solo les importa si la aplicación hace lo que necesitan en el hardware en el que necesitan ejecutarla. A menos que tengan una necesidad específica de ejecutar la aplicación en muchas plataformas diferentes, el hecho de que lo haga no les aporta ningún valor.
Por el contrario, los compromisos inevitables de hacer una API multiplataforma significan que todas las aplicaciones creadas por la API serán, en el mejor de los casos, de grado B en todas las plataformas. Nunca serán la mejor herramienta para usar en cada plataforma.
Todo esto significa que, en la mayoría de los casos de uso, las herramientas multiplataforma brindan al usuario final un producto inferior en comparación con los creados con API específicas de la plataforma. El usuario final siempre tendrá una mejor opción.
Usted gana dinero a largo plazo proporcionando a los usuarios finales las herramientas más útiles. Si no se concentra filosóficamente en hacer la vida del usuario final más fácil y productiva, está prácticamente condenado desde el principio. Los usuarios finales tienen muchas opciones y si su herramienta no es una de las mejores, no la tendrá en el mercado.
Solo debe utilizar herramientas multiplataforma si cree que "los usuarios se beneficiarán realmente de ejecutar esta aplicación en muchas plataformas diferentes". Si comienza a buscar herramientas multiplataforma únicamente porque le facilitarán la vida (a los desarrolladores), entonces las ha elegido por el motivo equivocado y le harán más daño de lo que ayudarán.
fuente
Existen varios enfoques para el desarrollo multiplataforma en dispositivos móviles. Por supuesto que todos tienen limitaciones. Ninguna solución logra aprovechar todas las funcionalidades del dispositivo como puede hacerlo una aplicación nativa.
Reutilización de código
Si bien todos los sistemas operativos móviles no usan el mismo lenguaje de desarrollo y API, a veces puede compartir algunas clases o código de nivel lógico.
C ++, por ejemplo, probablemente se pueda reutilizar para una aplicación de iOS , para una aplicación de Android utilizando el NDK , para una aplicación Symbian, ya que están desarrolladas en C ++, etc.
Algunas soluciones también ofrecen la posibilidad de escribir la aplicación en un idioma diferente al que normalmente utiliza el dispositivo. Los más famosos (de hecho el único que conozco) son comerciales y se basan en el proyecto Mono (desarrollo C #):
Pero no estoy seguro de que realmente podamos llamar a este desarrollo multiplataforma, ya que la reutilización del código es limitada según el dispositivo:
Y la parte de la interfaz de usuario también permanece específica para cada dispositivo.
desarrollo web
Una respuesta habitual cuando se pregunta sobre el desarrollo multiplataforma para móviles es el desarrollo web. Entonces necesitaríamos un contenedor, que usará el navegador móvil, para que se vea y se comporte como una aplicación nativa. Así es como funcionan algunos de los marcos multiplataforma que veremos más adelante.
El auge de HTML5 trae al desarrollo web funcionalidades que solo podrían hacerse con una aplicación nativa como geolocalización, aplicación fuera de línea, almacenamiento local.
Podemos encontrar cada vez más marcos para desarrollar aplicaciones web para móviles con un aspecto nativo al aprovechar los últimos estándares web HTML5, CSS3, Js:
Pero HTML5 es todavía muy joven y la implementación puede variar de un navegador a otro. La mayoría de los navegadores móviles predeterminados usan el motor WebKit (la principal excepción es Windows mobile / phone que usa Internet Explorer) y, aun así, no necesariamente admiten las mismas funcionalidades . La base de datos local todavía es incómoda para trabajar y no podemos estar seguros de cómo la implementarán los diferentes navegadores. Además, incluso con HTML5, el desarrollo web sigue siendo muy limitado en comparación con una aplicación nativa. No puede acceder a contactos, cámara, acelerómetro, etc.
Editar: A principios de este mes, el W3C ha entregado algunas advertencias sobre la evolución de HTML5: artículo de ZDNet
Por lo tanto, solo se adaptará a una categoría limitada de aplicaciones.
Marcos multiplataforma
Y además tenemos los marcos de aplicaciones móviles multiplataforma. Con el que presumiblemente puede desarrollar una vez y desplegar en diferentes plataformas. Estas soluciones suelen centrarse en iOS y Android y se basan en el motor WebKit. Ofrecen más interacción con las funcionalidades del teléfono mientras se desarrollan con tecnologías web. Los más conocidos son Nitobi PhoneGap, RhoMobile Rhodes, Appcelerator Titanium. Pero muchos otros están ahí fuera y no todos usan la misma técnica como MoSync, que traduce su código a su propio lenguaje intermedio antes de compilarlo para la plataforma deseada.
[1]
Recuerde que Apple tiene una política especial sobre las aplicaciones escritas para su plataforma. No parecen estar bloqueando estas aplicaciones en esta fecha, pero es una información que debe tenerse en cuenta.Editar: Apple ha cambiado esta política desde el 9 de septiembre.fuente
Obtiene algo en común cuando se implementa como una aplicación web (html5 como se mencionó anteriormente), pero para las aplicaciones nativas ricas, las API son completamente diferentes para los distintos teléfonos inteligentes.
HTML5 puede mejorar un poco las cosas, pero para hacer cosas interesantes es necesario ser nativo.
Hay marcos de teléfonos inteligentes 'multiplataforma' como Phonegap, pero he escuchado en su mayoría cosas malas sobre su uso para el trabajo "real". (muchos gastos generales, etc.)
fuente
Sí, html5 está recibiendo algo de atención. También debería mirar este consorcio y plataforma para el cuarto trimestre. No estoy seguro del éxito de ese proyecto, ya que parece un gran desafío, pero aquí están los detalles:
Sitio web: http://www.wholesaleappcommunity.com/default.aspx
Noticias: http://news.google.de/news/search?aq=f&pz=1&cf=all&ned=us&hl=en&q=%22Wholesale+Applications+Community%22
.
fuente
Hasta donde yo sé, la mayoría de esos dispositivos pueden ejecutar esto:
Java ME: la plataforma de aplicaciones más ubicua para dispositivos móviles
Creo que esto puede servir tanto de buen como de mal ejemplo.
fuente