Ver la Versión Completa : [ CONSULTA ] libgdx robovm android studio
Hola,
a ver si podeis echarme una mano, tengo 1 app en android y quiero exportarla a ios, creo q con libgdx se puede, no?
instale en libgdx y lo importe en el proyecto e instale el plugin de robovm pero soy incapaz de sacar el *.ipa
Alguien puede iluminarme??
Gracias
mocelet
09/02/15, 23:09:59
Se puede, de hecho hay algún que otro juego publicado en la App Store con robovm.
Todavía no me he animado con libgdx, pero hace poco estuve revisando la documentación y lo de iOS está bastante verde. Al menos ahora el creador de proyectos automático (Setup UI) ya crea el proyecto RoboVM (https://github.com/libgdx/libgdx/wiki/Project-setup,-running-&-debugging), se supone que no hay que hacer nada más que darle al ejecutar.
Ya nos contarás, me interesa el tema del rendimiento
kriogeN
09/02/15, 23:29:38
El RoboVM (con todos mis respetos) es la misma mierda que el Xamarin, vale que escribes en Java, que puede ser más natural que escribir código en Objective C aunque ahora con Swift cuesta bastante menos si conoces Java, pero al final estás programando de forma nativa, es decir, usando UIKit, Foundation, UIApplication, UIViewController, UIView, etc, toda la programación nativa de iOS.
Pero a cambio de dedicar 2 o 3 tardes mal contadas a acostumbrarte a escribir código en Swift pierdes la posibilidad de usar librerías existentes en Swift y Objective C (con el modo Bridge), además de tener que introducir en tu código la máquina virtual de RoboVM, aumentando el tamaño del IPA y (como ha dicho Mocelet) muy probablemente con menor rendimiento que si la app fuese 100% nativa. Como también ocurre con Xamarin incluyendo la máquina de Mono.NET
Además de todo lo anterior, no olvidemos que (al igual que ocurre con Xamarin que ya lo es) RoboVM es comercial, y costará dinero usarlo para fines comerciales, lo que ocurre es que ahora está en Beta y te dejan "probarlo".
Es que tengo un dilema y tengo que tomar una decision YA, quiero desarrollar una app de minijuegos sencillos en 2D que en principio no es para la play store, he empezado con Android Studio (estoy aprendiendo a usarlo) pero me he rayado xq pierdo usuarios q tengan windows e ios aunq ios hay q pagar hasta por respirar y en principio no es para las app stores cosa q en ios si no tienes jailbreak es imposible.
Que me aconsejais? q siga a morir en Android y en el futuro si necesito ios aprendo o busco alquien q me lo haga? o aprendo javascript y uso un programa multiplataforma? cual?
P.D.: con un colega(lo desarrollo él) hemos vendido 1 app, el cliente nos va a pedir version para ios, mejor ios nativo y cuando pida cambios modificar las 2 apps? o es una locura y en este caso si q es mas normal hacerla con 1 prog multiplataforma y asi modificar solo 1 vez?
mocelet
10/02/15, 09:46:13
Lo más importante es que esté bien diseñado en el papel y de la forma más genérica posible, así el desarrollo, ya sea con una biblioteca multiplataforma o implementaciones separadas, es más sencillo.
Todas las soluciones tienen pros y contras. Tienes que valorar la curva de aprendizaje, si vas a querer hacer más tipos de apps además de juegos, si necesitas integrar características nativas, el rendimiento (especialmente si hay inteligencia artificial), el tamaño final de la aplicación (que un "minijuego" ocupe 20 megas por usar unity tiene guasa) y, por supuesto, el mercado potencial al que accedes (igual merece la pena sacrificar usuarios de windows si un desarrollo nativo de ios te da más beneficios).
Sobre HTML5/javascript, si usas WebGL la compatibilidad en móviles es reducida, y el Canvas va a pedales si hay varios elementos animados y quieres fluidez. Tampoco tiene hilos, y las comunicaciones de red están limitadas a HTTP y WebSockets. Pero es una opción si es muy sencillo, y con Apache Cordova podrías empaquetarlo para Android o iOS e incluso usar algunas características nativas.
Otra opción, para mí la favorita si quieres tener pocas plataformas pero bien controladas, es crearte un motor de juegos propio que exponga un API genérico (API que usarás en el diseño en papel). Ese API la implementas para cada plataforma (bien a pelo o usando por debajo una biblioteca nativa como cocos2d/spritekit en el caso de iOS). En ese caso, añadir funciones al juego, si no tienes que tocar el motor gráfico, es simplemente escribir las mismas líneas con la sintaxis de cada sistema (java y swift p.ej.)
Lo que sí es una locura es que la arquitectura de la app sea distinta entre plataformas, o que esté implementada directamente encima de una biblioteca concreta. Si el día de mañana dejan obsoleta una biblioteca o aparece otra mejor, si no tienes un API genérico te tocará modificar el código de todos los juegos, si tenías una capa de abstracción solo tendrás que cambiar la implementación de esa capa, las apps ni se enteran.
kaiser75
10/02/15, 11:46:56
Aprovechando el hilo... Que otros metodos hay de pasar una aplicacion android a iOs?
mocelet
10/02/15, 12:31:28
Aprovechando el hilo... Que otros metodos hay de pasar una aplicacion android a iOs?
En realidad es que no hay ninguno xD Ni siquiera Xamarin o RoboVM, esos sirven para ejecutar código Java en iOS (1), y por tanto sirve para reutilizar la lógica de la aplicación o para llamar a métodos de iOS como si fueran de Java. Pero no "te pasan la app a iOS".
Si tu app llama a métodos de Android, antes de convertirla tendrás que sustituir todas las llamadas específicas de Android por su equivalente de iOS. Libgdx de hecho hace eso, tiene un API genérica sobre la que implementas el juego (para que no tengas que escribir nada que use el API de Android) y distintas implementaciones del motor que al final acaban llamando a métodos propios de la plataforma destino.
(1) Como bien apunta kriogeN, Xamarin es para desarrollar con .NET, lo que hacía libgdx era utilizar iKVM para pasar de Java a .NET y Xamarin para pasar de .NET a iOS
kriogeN
10/02/15, 14:15:56
En realidad es que no hay ninguno xD Ni siquiera Xamarin o RoboVM, esos sirven para ejecutar código Java en iOS, y por tanto sirve para reutilizar la lógica de la aplicación o para llamar a métodos de iOS como si fueran de Java. Pero no "te pasan la app a iOS".
Si tu app llama a métodos de Android, antes de convertirla tendrás que sustituir todas las llamadas específicas de Android por su equivalente de iOS. Libgdx de hecho hace eso, tiene un API genérica sobre la que implementas el juego (para que no tengas que escribir nada que use el API de Android) y distintas implementaciones del motor que al final acaban llamando a métodos propios de la plataforma destino.
Inciso técnico, Xamarin es C#, yo lo estuve usando un tiempo (la licencia gratuita que las apps sólo funcionan hasta 24 horas después desde la compilación) porque llevo programando para Windows en C# desde 2002 y porque me lo habían vendido como multiplataforma, al final me dí cuenta que multiplataforma una mierda porque toda la lógica de Android tenías que escribirla por un lado y toda la lógica de iOS por otro, sólo que en C# en lugar de en Java o Objective C (ahora Swift), al final sólo te ahorrabas la parte del modelo, que podía ser común, pero también es la más fácil de añadir y modificar. Pero también hay veces que los modelos son distintos en ambas plataformas por necesitar cosas en una que no necesitas en otra, por ejemplo el tema de Push en iOS se gestiona desde fuera y no desde la app.
En cuanto al resto, es así, LibGDX aunque sea Java NO ES ANDROID, sino que usa sus controladores y vistas propios que hacen llamadas a los propios de cada plataforma cuando compilas.
De todas formas sigo pensando que es mucho mejor programar de forma nativa siempre y cuando tengas la posibilidad, depender de lenguajes de terceros te obliga a que las novedades de cada nueva versión las tengas cuando las incluyan ellos, y no cuando la incluya el fabricante.
Sin ir más lejos, y para que te hagas una idea (y una cosa que habla muy mal de Apple, que me tienen hasta los mismísimos, además de su tiempo lento, lento, lento en aceptarte una app o una actualización) es que las Push en iOS 7 no son compatibles con las Push en iOS 8. Si tienes una app desarrollada para iOS 7 que usa Push funcionará bien en iOS 7, pero no lo hará en 8, y viceversa, para iOS 8 tienes que usar métodos sólo presentes en iOS 8. Al final esto se soluciona preguntando que versión se está ejecutando, y usar un método u otro. Pero si el día en que salió iOS 8 quieres actualizar tu app para que use las notificaciones nuevas, si programas en nativo no tendrás problemas, si programas en LibGDX, Xamarin o RoboVM, tendrás que esperar a que lo añadan los desarrolladores de cada uno de los entornos.
Por lo que entiendo, para mi juego, mejor que la haga para android y me evito jaleos? porque ios solo puedo por app store y por lo que leo tardan mil en publicar las actualizaciones, cosa q quiza necesite actualizaciones mensuales y win no tiene mucho mercado.
mocelet
10/02/15, 14:37:55
Sí, perdón por el desliz, libgdx usaba iKVM para pasar de java a .net y xamarin para pasar de .net a iOS. Ahora con robovm se ahorran un paso.
Por lo que entiendo, para mi juego, mejor que la haga para android y me evito jaleos? porque ios solo puedo por app store y por lo que leo tardan mil en publicar las actualizaciones, cosa q quiza necesite actualizaciones mensuales y win no tiene mucho mercado.
Si ya lo estás haciendo en libgdx, probar cómo va en iOS con el robovm no te costará demasiado. Igual es "aceptable", y eso es mejor que no tener nada, ¿no?
Si ya lo estás haciendo en libgdx, probar cómo va en iOS con el robovm no te costará demasiado. Igual es "aceptable", y eso es mejor que no tener nada, ¿no?
Tengo un cacao... pufff... tenia una app chorra que hice en android studio y encontre de casualidad libgdx, simplemente importe el modulo y como no sabia que hacer con el, en google lei algo de robovm y me baje el plugin, pero no supe como generar el ipa.
Pero no estoy haciendo nada con libgdx ni se como funciona.
Lo que tengo que hacer es decidirme si seguir con Android studio o usar cocos2d, cocoonjs o algo por el estilo. Se los pros y contras pero aun asi no consigo tomar la decision final. Por eso pido consejo, gente que lleveis tiempo en el mundillo a ver q creeis lo mejor, si multiplataforma xq es lo q viene y nose cual o android q ya sacaran como portar a ios y nose cual.
El que esta en el mundo sabe cosillas y puede aconsejar mejor, nose... toy exo un lio gordo.
kriogeN
10/02/15, 16:56:27
Tengo un cacao... pufff... tenia una app chorra que hice en android studio y encontre de casualidad libgdx, simplemente importe el modulo y como no sabia que hacer con el, en google lei algo de robovm y me baje el plugin, pero no supe como generar el ipa.
Pero no estoy haciendo nada con libgdx ni se como funciona.
Lo que tengo que hacer es decidirme si seguir con Android studio o usar cocos2d, cocoonjs o algo por el estilo. Se los pros y contras pero aun asi no consigo tomar la decision final. Por eso pido consejo, gente que lleveis tiempo en el mundillo a ver q creeis lo mejor, si multiplataforma xq es lo q viene y nose cual o android q ya sacaran como portar a ios y nose cual.
El que esta en el mundo sabe cosillas y puede aconsejar mejor, nose... toy exo un lio gordo.
Yo creo que lo mejor es programar de forma nativa, de hecho es lo que hago, tengo un PC con Windows que uso en el día a día (también para jugar) donde tengo el Eclipse (aunque supongo que en breve saltaré a Android Studio) y un iMac donde lo único que tengo instalado es el XCode, que uso para programar para iOS.
Por cierto, que el XCode es necesario SIEMPRE para iOS, si no tienes un Mac no podrás programar para iOS por mucho Xamarin, LibGDX o RoboVM que uses. En casi todos los casos usándolo directamente, y en el caso de Xamarin como mínimo teniéndolo en la mima red.
Yo creo que lo mejor es programar de forma nativa, de hecho es lo que hago, tengo un PC con Windows que uso en el día a día (también para jugar) donde tengo el Eclipse (aunque supongo que en breve saltaré a Android Studio) y un iMac donde lo único que tengo instalado es el XCode, que uso para programar para iOS.
Por cierto, que el XCode es necesario SIEMPRE para iOS, si no tienes un Mac no podrás programar para iOS por mucho Xamarin, LibGDX o RoboVM que uses. En casi todos los casos usándolo directamente, y en el caso de Xamarin como mínimo teniéndolo en la mima red.
y usando cocoonjs o cocos2d tambien necesitaria Xcode y un Mac?
kriogeN
10/02/15, 18:20:35
y usando cocoonjs o cocos2d tambien necesitaria Xcode y un Mac?
Cocoonjs no lo conozco, pero si quieres generar un IPA te digo al 99% que seguro que si.
Y Cocos2D es una librería escrita en Objective C, ahora con una versión nueva escrita en Swift. Es decir, con Cocos2D programas toda la parte del motor del juego, pero toda la lógica la sigues escribiendo de forma nativa en XCode, ya sea en Objective C o en Swift.
Pues decidico! android nativo! muchas gracias kriogeN y mocelet
vBulletin® v3.8.1, Copyright ©2000-2025, Jelsoft Enterprises Ltd.