¿Cómo se desarrolla el desarrollo de plataformas móviles en la práctica hoy (año 2013)?

Soy un desarrollador de .NET (hace más de 6 años) y recién estoy empezando a aprender sobre el desarrollo de teléfonos móviles / smartphones / tabletas. Lógicamente, yo (y probablemente todo el mundo por ahí) desearía que la aplicación que creamos se ejecute en todas las plataformas de teléfonos inteligentes. Simplemente se siente natural desde la perspectiva del usuario normal (laico) que si se trata de una "aplicación para móviles" debería funcionar en dispositivos móviles. No debería importar si soy iPhone o Android, la aplicación móvil es una aplicación para móviles. Nota: Estoy hablando de desarrollo de plataforma nativa, no HTML / aplicaciones web que se pueden utilizar desde los navegadores.

Así que esta es sólo una pregunta de alto nivel … ¿cuáles son las estrategias actuales (en el año 2013) para tratar este tema? La forma en que me imagino que funciona el desarrollo de plataformas móviles móviles es que probablemente haya una única base de código común que implemente la lógica de negocio de la aplicación y luego, para cada plataforma de segmentación, necesitamos desarrollar parte de GUI por separado. ¿Hasta qué punto es esto de la verdad en la práctica?

Tomemos por ejemplo el popular juego "Angry Birds". Lo jugué en iPhone, Android e incluso desde el navegador Chrome en Windows Desktop (probablemente como Flash o HTML5) y cada versión tenía sensación casi idéntica cuando se jugaba. ¿Cómo lo hicieron? Me imagino que tienen motor de juego como código común, pero en qué idioma se podría escribir? Por lo que sé no hay un lenguaje de programación común que, dado los archivos de código fuente único, puede ser compilado en binarios nativos para el teléfono ios / android / win8.

Desafortunadamente, no hay manera de desarrollar una aplicación multiplataforma que tenga una apariencia realmente nativa y comparta el mismo código para todas las plataformas. Es posible compartir algún código en algunas plataformas (por ejemplo, puedes usar C / C ++ para iOS y Android), pero solo para la parte lógica de tu aplicación. Para obtener una interfaz de usuario nativa, se verá obligado a utilizar APIs nativas. Si su aplicación no implica un procesamiento de datos complicado, entonces este enfoque puede tener más desventajas que realmente ayudarle.

Puede obtener una buena independencia de la plataforma con plataformas de aplicaciones híbridas como PhoneGap o Titanium, pero eso implica el desarrollo de HTML / Javascript, lo que podría llevar mucho tiempo y esfuerzos requeridos para que la experiencia del usuario sea algo similar a la de una aplicación nativa.

Puesto que usted es un .NET Dev una solución lógica para usted sería utilizar las ofertas de Xamarin. ( http://xamarin.com/ ) Le permiten desarrollar su lógica de back-end una vez y luego compilarlo en las tres principales plataformas móviles (iPhone / Android / WP). A continuación, puede utilizar este proyecto de lógica de back-end para escribir la capa de interfaz de usuario para cada plataforma específica.

Otra opción que los desarrolladores tienen es utilizar la ruta javascript / html similar a PhoneGap . Aunque no he mirado esto recientemente solía haber algunos golpes de rendimiento y las deficiencias de usabilidad de hardware cuando se va la ruta JS / HTML. Esto puede haber sido mejorado ahora.

EDIT: Desde que mencionó específicamente juegos como Angry Birds. La plataforma Unity ofrece un muy buen soporte para el desarrollo que es compatible con la mayoría de los dispositivos si necesita 3D.

Para Angry Birds específicamente … usan Box2D para la Física y no soy 100%, pero parece Cocos2d dibujar los elementos.

Si usted está buscando para construir juegos y como la idea de Xamarin a continuación, eche un vistazo a MonoGame que básicamente parece un puerto XNA a la Mono Framework.

Además de la respuesta de Jared, esta tarde probé a Xamarin.

Usted es un desarrollador de .Net y si ya está utilizando Visual Studio, usted es tan afortunado. Porque Xamarin tiene una extension for Visual Studio

Sólo quiero dar una mala impresión sobre xamarin, puede probar los buenos por el momento, la interfaz de usuario se crea en un archivo basado en xml y no hay auto completo, por lo que tiene que escribir todo el código o utilizar la ventana de propiedades. Pero creo que será mejor por el momento. Buena codificación

  • Cifrado RSA en Java: ¿Problemas de plataforma cruzada?
  • Desarrollo de aplicaciones móviles de plataforma cruzada
  • Cuando se usa Mono Touch, ¿puedo también empaquetar para una aplicación estándar de Windows?
  • Desarrollo de una biblioteca de redes Android / iOS compartida
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.