Aplicación para móviles: orientada a iPhone, WP7, Android y Blackberry

¿Existe una manera sana de desarrollar una aplicación móvil de plataforma cruzada? Queremos que sean aplicaciones nativas en cada plataforma, y ​​no necesariamente algún tipo de página web.

Actualmente estamos pensando dividirlo en dos idiomas:

  • Backend C # (lógica de negocio)
  • -> Aplicación C # estándar para WP7
  • -> App construido en MonoTouch para iPhone / iPad / etc.
  • Backend Java (lógica de negocio)
  • -> Standard Android Java app (la versión de MonoDroid de C # no está lista todavía)
  • -> Aplicación estándar de Blackberry Java

También podríamos desarrollar inicialmente en C # y usar una de las herramientas de conversión por ahí para obtener nuestro C # convertido en Java como punto de partida.

¿Hay otro enfoque? Nuestros conocimientos incluyen principalmente un fuerte fondo C # .Net y una pequeña experiencia Java.

Realmente no queremos ir a niveles bajos y usar algo como C / C ++ para hacer el trabajo. Estos son generalmente va a ser simples aplicaciones LOB que se comunican a algunos servicios web.

Pregunta lateral: ¿cómo los desarrolladores de juegos como los fabricantes de Angry Birds lo hacen?

ACTUALIZAR:

MonoDroid se ha lanzado oficialmente. Por lo tanto, parece que solo necesitaría usar Java para BlackBerry. Estamos considerando no desarrollar para BlackBerry en absoluto, porque el desarrollo de las otras 3 plataformas se ha simplificado. Definitivamente hay un costo, ya que MonoTouch y MonoDroid son $ 399 y también se necesita una licencia para Visual Studio (esto no incluye el costo de la tienda de aplicaciones, etc.).

No hay una buena respuesta simple que conozco para todas las plataformas móviles. Puede utilizar entornos de desarrollo como Appcelerator Titanium , que compila a código nativo en varias plataformas (ahora, por ejemplo, creo que Titanium soporta iOS y Android, con planes para Blackberry). Sin embargo, estos suelen tener una API limitada a la que tienen acceso y aún así terminan necesitando diseñar diferentes interfaces de usuario para las diferentes plataformas (en mi trabajo comercial, nunca he utilizado con éxito una plataforma de este tipo)

También podría diseñar toda la lógica de negocio en un back-end de servicios web y luego escribir aplicaciones de "thin client" para cada plataforma. Esto funciona, pero por supuesto requiere acceso a la red cuando el usuario final desea usar su aplicación. (Normalmente estará allí, pero a veces no)

En última instancia, por lo general terminan haciendo lo que usted propone – escribir la lógica básica de negocio en un par de idiomas diferentes tan genéricamente como sea posible, y luego agrupar eso en código UI / dispositivo personalizado para cada plataforma. No he encontrado una mejor manera yo mismo ….

(BTW, creo que los juegos como Angry Birds se escriben en gran medida en OpenGL y luego se cargan en el procesador OpenGL en cada plataforma, pero podría estar equivocado …)

Esas son algunas grandes respuestas. Estoy de acuerdo, el desarrollo de la plataforma x sigue siendo muy primitivo. Me gustaría añadir 2 puntos:

1) Usted no necesita escribir su backend en idiomas diferentes. Elija un idioma (en función de su nivel de confort, criterios de rendimiento, etc.) y, a continuación, conecte desde sus aplicaciones específicas de la plataforma directamente al backend. Si su servidor es código del lado del servidor, una manera de hablar con él sería a través de XmlHttpClient. Si se trata de una pieza de código nativo común a través de varias aplicaciones y se escribe en decir C + +, puede utilizar JNI de Java y ensamblador de C #.

2) Otra razón para evitar las herramientas de la plataforma x es que siempre tendrás que esperar a que soporten las nuevas API publicadas por el proveedor de la plataforma (Apple, Google, MSFT, etc.). Una vez que estas empresas liberen nuevas API, las herramientas tendrán que ser actualizadas y sólo entonces podrá utilizar las nuevas API.

No creo que esto sea (fácilmente) posible, si no usas HTML5 (jquerymobile, etc.) en un WebView en tu propia aplicación (parece una aplicación real, pero aún así verás que no lo es) Del navegador normal. Todavía puedes usar alguna API nativa del dispositivo (acelerómetro, …).

Hay plataformas (comerciales) como Sybase Unwired Platform que le ayudan a generar código de cliente. Afaik para Blackberry y Windows Mobile incluso algunas UI se pueden generar fuera de los objetos de negocio en el servidor. Pero a mí me parece que esto podría ser demasiado pesado para su caso.

Saludos, Martin

  • ¿Cual es mejor? ¿Aplicación nativa o aplicación híbrida?
  • Windows Phone 7 equivalente de Android WebView
  • ¿Cómo construimos una aplicación nativa móvil tal que podamos usarla tanto para Android como para WP7?
  • Código seguro para codificar una contraseña en una aplicación para dispositivos móviles
  • ¿Existe un marco de realidad aumentada que funcione en iPhone, Android y Windows Phone 7?
  • Inicio del desarrollo de aplicaciones telefónicas
  • Desarrollando para iPhone / Android y WPF
  • Intención equivalente en WP7
  • Desarrollo de aplicaciones móviles de plataforma cruzada
  • ¿Cómo atribuir un icono que utiliza "Licencias Creative Commons (Atribución 3.0 Unported)"?
  • Imágenes de fondo que no funcionan en Android, BB, Windows Phone
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.