android - programacion - Desarrollo de aplicación móvil multiplataforma
programacion de aplicaciones moviles (5)
Cada vez se lanzan 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 una aplicación multiplataforma es un dolor de cabeza para los desarrolladores. Estoy buscando cosas comunes en las plataformas que ayudarán a los desarrolladores que desean portar la aplicación a todas las plataformas. Como cuáles son las resoluciones de pantalla de diff, los métodos de entrada, el soporte de gl abierto, etc., comparta los detalles que conozca para cualquiera de las plataformas.
O hay posibilidades, al escribir código en html (tipo de widget de cosas) y cargarlo en la aplicación nativa. Sé sobre el android, en el cual podemos agregar la vista web a la aplicación llamando a setContentView(view)
Por favor, comparta los detalles de la clase donde podemos agregar la vista html a la aplicación nativa de diferentes tipos de plataformas que usted conoce.
El propósito de este hilo es compartir detalles comunes entre los desarrolladores. marcando como wiki de la comunidad.
Herramientas de plataforma cruzada y biblioteca
XMLVM, Codename One e iSpectrum (compila código Java de una aplicación de Android o crea uno desde cero)
Phone Gap (aplicaciones móviles multiplataforma)
Titanium (para crear aplicaciones móviles y de escritorio nativas con tecnologías web)
Mono Touch (C # para iphone)
rhomobile - http://rhomobile.com/ samples están aquí: http://github.com/rhomobile/rhodes-system-api-samples
Sencha Touch - Sencha Touch es un framework de aplicaciones móviles HTML5 que le permite desarrollar aplicaciones web que se ven y se sienten como nativas en los dispositivos con pantalla táctil Apple iOS y Google Android. http://www.sencha.com/products/touch/
Corona - Biblioteca multiplataforma para aplicaciones Iphone / Ipad / Android. Demasiado increíble. http://anscamobile.com/corona/
Una guía para exportar la aplicación de Android existente a Windows Phone 7 http://windowsphone.interoperabilitybridges.com/articles/windows-phone-7-guide-for-iphone-application-developers
- Jquery Mobile Touch-Optimized Web Framework para teléfonos inteligentes y tabletas
Al desplegarlo como aplicación web (html5 como se mencionó anteriormente), obtiene algunas características comunes, 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 debes convertirte en nativo.
Existen marcos para teléfonos inteligentes "multiplataforma" como Phonegap, pero he escuchado sobre todo cosas malas sobre su uso para un trabajo "real". (muchos gastos generales, etc.)
Existen varios enfoques para el desarrollo multiplataforma en dispositivos móviles. Por supuesto, todos tienen limitaciones. Ninguna solución logra aprovechar todas las funcionalidades del dispositivo como lo hace una aplicación nativa.
Código de reutilización
Si bien todos los sistemas operativos móviles no usan el mismo lenguaje de desarrollo y API, a veces puedes compartir algunas clases o código de nivel lógico.
C ++, por ejemplo, probablemente pueda ser reutilizado para una aplicación iOS , para una aplicación Android utilizando el NDK , para una aplicación Symbian, ya que están desarrollados en C ++, etc.
Algunas soluciones también ofrecen la posibilidad de escribir la aplicación en un idioma diferente al que normalmente usa el dispositivo. Los más famosos (de hecho, el único que conozco) son comerciales y se basan en el proyecto Mono (desarrollo de C #):
- MonoTouch para iPhone [1]
- MonoDroid para Android (aún en desarrollo)
- Proyecto similar para BlackBerry (todavía en desarrollo)
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:
- Windows Phone 7 no permitirá el desarrollo de código nativo (tal vez en futuras actualizaciones)
- El proyecto AFAIK mono like no existe para todas las plataformas (¿todavía?) Bada, webOS, maemo, etc.
Y la parte de UI también se mantiene específica para cada dispositivo.
desarrollo web
Una respuesta habitual al preguntar sobre el desarrollo multiplataforma para móviles es el desarrollo web. Entonces necesitaríamos un contenedor que use el navegador móvil para que se vea y se comporte como una aplicación nativa. Así es como algunos de los marcos multiplataforma que veremos más adelante en el trabajo.
El auge de HTML5 trae a las funcionalidades de desarrollo web que solo se podría hacer con una aplicación nativa como la geolocalización, la aplicación fuera de línea, el almacenamiento local.
Podemos encontrar más y más frameworks para desarrollar aplicaciones web para móviles con una apariencia nativa al aprovechar los últimos estándares web HTML5, CSS3, Js:
Pero HTML5 todavía es 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 aún así no necesariamente soportan las mismas funcionalidades . La base de datos local todavía es incómoda de trabajar y no podemos estar seguros de cómo los diferentes navegadores la implementarán. 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 enviado algunas advertencias sobre la evolución de HTML5: Artículo de ZDNet
Por lo tanto, solo se adecuará a una categoría limitada de aplicaciones.
Marcos multiplataforma
Y que tenemos los marcos de aplicaciones móviles multiplataforma. Con lo cual, presumiblemente, puede desarrollarse una vez e implementarse en diferentes plataformas. Estas soluciones generalmente se enfocan en iOS y Android y dependen del motor WebKit. Ofrecen una mayor 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 por ahí 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 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.
Mi respuesta aquí cubre algunas de las limitaciones técnicas de las herramientas de plataforma cruzada, pero permítanme ampliar un poco:
Creo que las herramientas multiplataforma han sido históricamente siempre usadas porque esas herramientas tienen un enfoque filosófico incorrecto.
Todos los puntos de venta de las herramientas de plataforma cruzada son los beneficios que aportan a los desarrolladores . Se venden con la idea de que les permiten a los desarrolladores escribir, una vez, ejecutar en cualquier lugar. Se venden con la idea de que les permiten a los desarrolladores expandir su mercado sin aprender nuevas API. Se venden con la idea de que les permiten a los desarrolladores reducir el costo y el tiempo de comercialización.
¿Qué herramienta de plataforma cruzada NO se vende? 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án duro el desarrollador tuvo que trabajar para llevar el producto al mercado. Tampoco les importa cuántas plataformas puede ejecutar la aplicación cuando no usan una sola plataforma. Simplemente les importa si la aplicación hace lo que necesitan en el hardware que necesitan para ejecutarlo. A menos que tengan una necesidad específica de ejecutar la aplicación en muchas plataformas diferentes, el hecho de que no les de valor.
Por el contrario, los compromisos inevitables de crear 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 proporcionan al usuario final un producto inferior en comparación con los que se hacen con API específicas de la plataforma. El usuario final siempre tendrá una mejor opción.
Usted gana dinero a largo plazo al brindarles a los usuarios finales las herramientas más útiles. Si no te centras filosóficamente en hacer que la vida del usuario final sea más fácil y productiva, estás condenado al fracaso desde el principio. Los usuarios finales tienen muchas opciones y si su herramienta no es una de las mejores, no lo hará en el mercado.
Solo debería utilizar herramientas multiplataforma si cree que "los usuarios se beneficiarán realmente al ejecutar esta aplicación en muchas plataformas diferentes". Si comienzas a buscar herramientas multiplataforma únicamente porque harán tu vida (la de los desarrolladores) más fácil, entonces las has elegido por el motivo equivocado y te harán más daño de lo que te ayudarán.
Por lo que 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 como buenos y malos ejemplos.
Sí, html5 está recibiendo algo de atención. También debe ver este consorcio y plataforma para entrar en Q4. 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
WAC tiene como objetivo publicar su especificación inicial y los componentes de su SDK a los desarrolladores en noviembre. Esta especificación se basará en los estándares W3C y creará una plataforma sólida para desarrollar aplicaciones web móviles ricas. WAC también proporcionará compatibilidad con versiones anteriores para dispositivos basados en las especificaciones JIL y BONDI actuales. ( http://www.convergedigest.com/Bandwidth/newnetworksarticle.asp?ID=31021 )
.
Es una coalición internacional de alrededor de 25 compañías de telecomunicaciones que tiene como objetivo crear una plataforma abierta a todos los desarrolladores y venderla a todos los usuarios de teléfonos móviles. ( http://www.downloadsquad.com/2010/02/15/atandt-wholesale-applications-community-is-a-platform-not-an-app/ )