BennuGD Android

Started by gecko, March 08, 2010, 01:59:34 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

josebita

Las SDL están en mi repo y son una copia directa del repo oficial de desarrollo.

DCelso

Compiladas por nosotros a partir del código fuente oficial de SDL, las versiones 1.3 y 2.0 traen soporte oficial para android.

http://www.libsdl.org/tmp/SDL/

El problema es que la forma oficial de compilar c/++ en android es un mega parche para ejecutar binarios creados en c  desde java a través de Java Native Interfaz.

Básicamente consiste en crear librerías dinámicas (.so), y llamar a sus funciones desde java. Y usando "android ndt" te abstraes un poco de crear los wrappers necesarios para unir java con c.
por ejemplo los señores de SDL en su código fuente traen una clasecita JAVA que es la encargada de llamar a las librerias SDL y ejecutar la aplicación c/SDL que hayas programado. Por lo que se reduce a meter tu código c/SDL de tu aplicación en un directorio específico "src", compilarlo, compilar la clase java y empaquetarlo todo en un paquete android (Todo un arte mágico :D.)

También he visto que hay una forma de compilar c/c++ puro y duro para android (arquitectura arm) y saltarte toda la API java, claro al fin y al cabo es una especie de linux esto de android, el problema de este formato es que para ejecutarlo necesitas de aplicaciones externas de exploración de archivos o te tienes que montar un picatoste para montarte un paquete apk.


Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

Quote from: josebita on August 07, 2012, 06:30:22 PM
Las SDL están en mi repo y son una copia directa del repo oficial de desarrollo.

pero no cambian segun la version de android? (me parece que, deberian)

Quote from: DCelso on August 07, 2012, 08:51:46 PM
Compiladas por nosotros a partir del código fuente oficial de SDL, las versiones 1.3 y 2.0 traen soporte oficial para android.

http://www.libsdl.org/tmp/SDL/

El problema es que la forma oficial de compilar c/++ en android es un mega parche para ejecutar binarios creados en c  desde java a través de Java Native Interfaz.

Básicamente consiste en crear librerías dinámicas (.so), y llamar a sus funciones desde java. Y usando "android ndt" te abstraes un poco de crear los wrappers necesarios para unir java con c.
por ejemplo los señores de SDL en su código fuente traen una clasecita JAVA que es la encargada de llamar a las librerias SDL y ejecutar la aplicación c/SDL que hayas programado. Por lo que se reduce a meter tu código c/SDL de tu aplicación en un directorio específico "src", compilarlo, compilar la clase java y empaquetarlo todo en un paquete android (Todo un arte mágico :D.)

También he visto que hay una forma de compilar c/c++ puro y duro para android (arquitectura arm) y saltarte toda la API java, claro al fin y al cabo es una especie de linux esto de android, el problema de este formato es que para ejecutarlo necesitas de aplicaciones externas de exploración de archivos o te tienes que montar un picatoste para montarte un paquete apk.

genial, las voy a compilar....

si, conozco lo que es JNI, para un trabajo hice un script (creo que era en perl o phyton, no recuerdo) que generaba una jni interfaz para java de cualquier libreria estandard, la idea era usar unas librerias de base de datos donde el cliente tenia soportado todo su sistema e inmensa base de datos, y que obviamente java no soportaba como cliente en el sistema operativo donde querian hacer su nueva aplicacion con java.

exacto, android no es como un linux, es un linux que esta corriendo debajo de una interfaz java... puedes correr aplicaciones C puras en android, la prueba esta cada vez que entras al adb shell y ejecutas todos los comandos de la shell que esta en el android... podrias lanzar bennugd desde el adb shell siendo puro binario C sin interfaz android (para probar), y matarla desde una shell si pierdes el control.

pero si, es un linux para arm.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

veo que has dicho 1.3 y 2.0...

creo que en bennugd usamos 1.2... no hay soporte de android en 1.2?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

KeoH

para mi esto q estais diciendo es el chino mandarin mas profundo q pueda existir xDD Pero animo xDDDDD

SplinterGU

gracias...

bueno, ya compile la SDL 1.2.15, parcheada y version dinamica (.so)...

por hoy corto, estoy muerto de sueño... estos dias me estan matando con el trabajo...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

Quote from: SplinterGU on August 08, 2012, 12:55:32 AM
Quote from: josebita on August 07, 2012, 06:30:22 PM
Las SDL están en mi repo y son una copia directa del repo oficial de desarrollo.
pero no cambian segun la version de android? (me parece que, deberian)
El código es el mismo para todas las versiones de android, aunque sólo las soportadas (2.x en adelante).
Y SDL 1.2 no soporta oficialmente android, no; hay versiones no oficiales que sí que lo soportan, claro.

DCelso

splinter, ¿a que te refieres con eso?
¿has compilado SDL 1.2.15 para androidl? ¿de donde te has bajado esa versión? ¿vas a hacer un port oficial? :D

Por cierto, creo recordar que estabas haciendo una versión que cambiaba las sdl por opengl, ¿como va? sería chido tenerla.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

Quote from: josebita on August 08, 2012, 09:04:05 AM
Quote from: SplinterGU on August 08, 2012, 12:55:32 AM
Quote from: josebita on August 07, 2012, 06:30:22 PM
Las SDL están en mi repo y son una copia directa del repo oficial de desarrollo.
pero no cambian segun la version de android? (me parece que, deberian)
El código es el mismo para todas las versiones de android, aunque sólo las soportadas (2.x en adelante).
Y SDL 1.2 no soporta oficialmente android, no; hay versiones no oficiales que sí que lo soportan, claro.

me baje la SDL oficial, y la parche siguiendo un instructivo de SDL 1.2.13... y le hice unas ligeras modificaciones para generar una .so... ademas de tomarme algunas otras licencias en las modificaciones... nada del otro mundo.

pero me faltan generar SDL_mixer.

con respecto a lo de la version, no me refiero a los fuentes, sino a los binarios... pregunto, si son los mismos o hay ligeras modificaciones segun la version de android? no sea cosa que eso sea la madre de los problemas.

quizas dije una burrada... todo es posible... :)

Quote from: DCelso on August 08, 2012, 02:00:49 PM
splinter, ¿a que te refieres con eso?
¿has compilado SDL 1.2.15 para androidl? ¿de donde te has bajado esa versión? ¿vas a hacer un port oficial? :D

Por cierto, creo recordar que estabas haciendo una versión que cambiaba las sdl por opengl, ¿como va? sería chido tenerla.


si, compile SDL 1.2.15 para android... pero aun no compile los modulos de bennugd porque me faltan sdl_mixer... si te sirve para alguna prueba te puedo pasar la .so y los .h (+ los fuentes completos, si lo deseas)... como sea, lo subire al repositorio de bennugd cuando este listo como 3rdparty.

lo del opengl esta encajonado de momento... la version en la que habia trabajado con eso, quedo demasiado obsoleta...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

La SDL_mixer debería ser menos complicada de compilar si has podido compilar la SDL (imagino que el parche que te has bajado tiene soporte para audio en android, ¿no?).

Respecto a lo de las versiones: las .so que se generan para Android valen todas para todas las versiones soportadas (2.2/2.3 en adelante) dentro de la misma arquitectura. Eso sí: si abres el apk, que es un zip, verás que hay tres juegos de librerías: unas para armv6, otras para armv7 y otras para x86.

Una cosa que creo que es importante: en mi versión monolítica he modificado la mod_file para que pueda funcionar con las SDL_RWops además de todo lo que se incluye por defecto. Eso es importante porque es la forma que tenemos de poder leer los recursos dentro del apk. Asegúrate de que el parche de la SDL1.2 que te has bajado incluye soporte para eso porque de lo contrario lo vas a tener que implementar tú con physfs o algo parecido...

DCelso

sdl_mixer es un rollo de compilar, lo digo porque lo es en psp, depende de otras librerias no portadas que tienes que ir portando una a una como por ejemplo libmikmod, Que es morirte de asco el portarla por culpa de autotools, gracias a dios he descubierto que la versión oficial de libmikmod que hay subida a la rama oficial mercury( aún no liberada) ha sido migrada a cmake y es una gozada hacer compilaciones cruzadas con cmake, simplemente creas un archivo con las rutas de los compiladores cruzados y ejecuts cmake -D<nombrearchivo>. con esta versión porté en dos segundos libmikmod a psp. :D
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

si, seguro es mas facil, solo que aun no he encontrado tiempo para hacerlo, estoy con muchas cosas... mucho trabajo y otras cosas.

si, tiene parche de audio y video.

lo del mod_file lo tendre en cuenta, en principio no hare pruebas con apk, sino directamente por adb.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

Quote from: DCelso on August 09, 2012, 02:33:36 PM
sdl_mixer es un rollo de compilar, lo digo porque lo es en psp, depende de otras librerias no portadas que tienes que ir portando una a una como por ejemplo libmikmod, Que es morirte de asco el portarla por culpa de autotools, gracias a dios he descubierto que la versión oficial de libmikmod que hay subida a la rama oficial mercury( aún no liberada) ha sido migrada a cmake y es una gozada hacer compilaciones cruzadas con cmake, simplemente creas un archivo con las rutas de los compiladores cruzados y ejecuts cmake -D<nombrearchivo>. con esta versión porté en dos segundos libmikmod a psp. :D

decidanse! es mas facil o mas dificil? :D

decir que con la SDL no use autotools, sino Makefile.minimal modificado a mano.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

#508
Quote from: SplinterGU on August 09, 2012, 02:43:50 PM
Quote from: DCelso on August 09, 2012, 02:33:36 PM
sdl_mixer es un rollo de compilar, lo digo porque lo es en psp, depende de otras librerias no portadas que tienes que ir portando una a una como por ejemplo libmikmod, Que es morirte de asco el portarla por culpa de autotools, gracias a dios he descubierto que la versión oficial de libmikmod que hay subida a la rama oficial mercury( aún no liberada) ha sido migrada a cmake y es una gozada hacer compilaciones cruzadas con cmake, simplemente creas un archivo con las rutas de los compiladores cruzados y ejecuts cmake -D<nombrearchivo>. con esta versión porté en dos segundos libmikmod a psp. :D

decidanse! es mas facil o mas dificil? :D

decir que con la SDL no use autotools, sino Makefile.minimal modificado a mano.
Una SDL_mixer a pelo (sin soporte para nada, pero que te permita compilar la mod_sound) es fácil. Añadirle a eso soporte para ogg/theoravorbis debería ser fácil también. Mikmod y familia costará más, imagino.

Yo tengo makefiles para muchas de esas cosas en formato del SDK de Android en mi repo, pero no creo que sirvan con las herramientas típicas.

SplinterGU

tampoco quiero una mixer sin soporte de nada... lo ideal seria que tenga soporte de al menos lo basico.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2