Si es un desarrollador de iOS, ¿cuál es la mejor y más rentable manera de crear una versión de Android de su aplicación?

Comience construyendo la aplicación iOS en C / C ++ en lugar de Objective-C. Solo use ObjC donde necesite código de pegamento. Casi todas las API de iOS tienen enlaces C y C ++. (Si bien gcc incluido con el NDK de Android puede compilar ObjC, no es tan robusto como la implementación de Apple y la vinculación podría ser un problema).

Separe su aplicación en funcionalidad front-end y back-end. Evite las API específicas de la plataforma donde las API multiplataforma estándar están disponibles: libc, hilos POSIX e IPC, sockets, OpenGL, etc. Ambas plataformas están basadas en Unix, así que aproveche al máximo las similitudes. Su back-end debe compilarse para iOS y Android (con el NDK) con pocos o ningún cambio. Esto también ayuda con el mantenimiento.

Planifique desde el principio para admitir diferentes relaciones de aspecto de pantalla y resoluciones. Use un sistema de skinning si es necesario; no se bloquee con un diseño integrado en su fuente.

Su front-end rara vez debería cambiar. Dado que el back-end puede compilarse tal cual para ambas plataformas, hay poco o ningún costo para construir nuevas versiones de Android.

Sugeriría seriamente la contratación externa.

Si tiene una aplicación funcional y completa creada para iOS y desea que se transfiera a Android u otra plataforma, muchos de los problemas relacionados con las especificaciones y la documentación que a menudo surgen con el desarrollo subcontratado desaparecen. Ya tiene todas las interfaces, flujos y detalles precisados ​​y tiene una implementación de referencia de cualquier algoritmo o lógica engañosa. Es probable que también tenga todo el arte, las localizaciones y otros activos que no sean de código necesarios.

No necesitará una agencia o una empresa de consultoría de valor agregado, puede trabajar directamente con un desarrollador. Los desarrolladores más experimentados podrán darle una estimación precisa e incluso pueden estar dispuestos a cotizarle una tarifa plana porque las cosas están muy claramente especificadas.

Depende del marco que use, si usa alguno. Y el tipo de aplicación que está creando.

Supongo que está utilizando algún marco, y que es una aplicación de juegos.

Para nosotros, utilizamos Cocos2D como nuestro marco para crear aplicaciones de iOS. Para Android, tenemos el framework Cocos2d-x (C ++), donde migramos el código en iOS, línea por línea a C ++. Luego, los binarios nativos se envuelven como una aplicación NDK y se empaquetan como un archivo apk de Android. Tenemos una aplicación lanzada en la tienda de aplicaciones Android de Amazon con este método.

Para nosotros, lo anterior resultó ser la forma más rentable, ya que es de código abierto, “gratis” y con licencia MIT. Es la mejor opción para nosotros porque tenemos exactamente la misma fidelidad de experiencia de usuario en ambas plataformas, ya que las bibliotecas subyacentes son las mismas en ambos, solo en diferentes idiomas.

Por supuesto, hay opciones pagas de “escribir una vez, implementar en iOS y Android”. Tiene Corona SDK (Lua), Marmalada (C ++), etc.