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.

SplinterGU

Quote from: josebita on April 23, 2011, 04:38:31 PM
Parece que vamos a necesitar Android 1.6 o superior. ¿Alguien anda aún con versiones anteriores?.

1.6? yo tengo la tablet que compre hace un tiempo, tenes idea que entorno necesitaria para intentar compilar con 1.6?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

¿Qué versión tienes en la tableta?
Para compilar necesitas instalarte el SDK de Android (con alguna versión superior al SDK 7) y el NDK. Todo está en developer.android.com

Drumpi

#62
En teoría, los móviles de gama media-baja aun se mueven en versiones 2.1 o 2.2, así que a menos que alguien quiera programar para tablet chinorris con versiones Fred Flinstons, creo que podríamos empezar por ahí ¿o no?

;D ;D ;D ;D

Para compilar, tengo entendido que lo mejor es Eclipse con el NDK que se puede descargar desde el propio programa (y sí, hay para Linux). También existe un "emulador" de Android que aun no he probado, desde la página de Sun.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

Quote from: josebita on April 23, 2011, 10:18:38 PM
¿Qué versión tienes en la tableta?
Para compilar necesitas instalarte el SDK de Android (con alguna versión superior al SDK 7) y el NDK. Todo está en developer.android.com

tengo uno de esos custom, que dicen 1.9, pero en realidad son 1.6, o eso creo.

ese sdk sirve para hacer versiones para cualquier android? otra pregunta, que hooks deberia implementar para interactuar con el SO, o sea, se que tengo que hacer de bennugd una libreria jni, pero tambien se que tengo que meter hooks que atiendan al operativo, cosas como switchs de tareas, y otras cosas... tenes alguna idea de eso?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

La versiçon 1.9 no salió, así que me imagino que será algo así, sí.

En cuanto a lo que tienes que hacer: basicamente SDL se encarga de todo si modificas los Makefiles adecuadamente. Lo que hace es compilar tu código a una librería dinámica y desde código java lanza el main de la librería principal.
Los hooks en ppio. los hace SDL también. Aquí tienes el fichero principal java de mi versión monolítica:
http://code.google.com/p/bennugd-monolithic/source/browse/trunk/android/src/org/libsdl/app/SDLActivity.java
Y aquí el SDL_android.cpp que hace los hooks C<->Java:
http://code.google.com/p/bennugd-monolithic/source/browse/trunk/android/jni/SDL/src/core/android/SDL_android.cpp

En ppio. el único que podrías tener que tocar es el código java salvo que el segundo tuviera bugs.

Todo esto es para dar soporte a Android < 2.3. Para Gingerbread en adelante, es posible crear aplicaciones enteramente en C y creo que es lo deseable, pero es pronto porque hay mucha gente que no lo usa aún.

Otra cosa que te comenté es que para que el dlopen de C sea capaz de encontrar las librerías, tienes que haberlas cargado desde el código java antes (líneas 37-40 del .java). Con el intento que hice de versión con módulos dinámicos las librerías lib* parecía encontrarlas sin problemas, pero vas a tener problemas con las mod* por aquello de que el sistema asume que las librerías .so han de empezar por "lib".

SplinterGU

Quote from: josebita on April 24, 2011, 11:51:06 AM
La versiçon 1.9 no salió, así que me imagino que será algo así, sí.

En cuanto a lo que tienes que hacer: basicamente SDL se encarga de todo si modificas los Makefiles adecuadamente. Lo que hace es compilar tu código a una librería dinámica y desde código java lanza el main de la librería principal.
Los hooks en ppio. los hace SDL también. Aquí tienes el fichero principal java de mi versión monolítica:
http://code.google.com/p/bennugd-monolithic/source/browse/trunk/android/src/org/libsdl/app/SDLActivity.java
Y aquí el SDL_android.cpp que hace los hooks C<->Java:
http://code.google.com/p/bennugd-monolithic/source/browse/trunk/android/jni/SDL/src/core/android/SDL_android.cpp

En ppio. el único que podrías tener que tocar es el código java salvo que el segundo tuviera bugs.

Todo esto es para dar soporte a Android < 2.3. Para Gingerbread en adelante, es posible crear aplicaciones enteramente en C y creo que es lo deseable, pero es pronto porque hay mucha gente que no lo usa aún.

Otra cosa que te comenté es que para que el dlopen de C sea capaz de encontrar las librerías, tienes que haberlas cargado desde el código java antes (líneas 37-40 del .java). Con el intento que hice de versión con módulos dinámicos las librerías lib* parecía encontrarlas sin problemas, pero vas a tener problemas con las mod* por aquello de que el sistema asume que las librerías .so han de empezar por "lib".

pero me parece que eso de las mod* es con la carga con busquedas (LD_LIBRARY_PATH), si le pones el path completo (cosa que ahora hace bennugd) no tiene ese problema... pero tengo que probarlo.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

Esto no es un linux normalito donde puedes hacer más o menos lo que quieras. Aquí debemos asumir que el usuario no tiene rooteado el móvil así que estas cosas no serán posibles. Es la máquina virtual de Dalvik la que controla la ejecución de código.

SplinterGU

la verdad que no tengo idea, aun no me meti, por eso pregunto.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

peterpollito

Si ya lo portais a Android me corro de gusto...BennugGd esta pillando un nivel brutal.Karma!

FreeYourMind

josebita tienes algun avance en relación al tema ? Mañana le voy a dedicar un par de horas al tema, si tienes algo avisa please.
Thanks.

josebita

Quote from: FreeYourMind on July 27, 2011, 11:11:16 PM
josebita tienes algun avance en relación al tema ? Mañana le voy a dedicar un par de horas al tema, si tienes algo avisa please.
Thanks.
Algo funciona, pero no va bien: tiene problemas con el modo gráfico. Parece que la gente de la lista de SDL empieza a interesarse y han empezado a salir cosas útiles por allí pero de momento lo que tengo no es útil.
Dejo el enlace a un apk de Bennu tal y como está ahora (no incluye los últimos cambios de Splinter). Para que "funcione" hay que instalar el apk y poner el main.dcb (se tiene que llamar main.dcb) en el directorio data de la tarjeta SD (/sdcard/data/main.dcb).

http://www.megaupload.com/?d=9NTEX9SL

Por lo menos parece que ya va en dispositivos con GPU...
Versión mínima de android: a saber.
Abstenerse de usar set_mode()
Hay que cambiar el directorio de trabajo al del dcb a mano al principio de la ejecución, que si no creo que no encuentra nada.
Las teclas del teléfono se leen como teclado, pero no recuerdo los scancodes específicos.
El sonido parece funcionar, pero creo que lo he compilado sin soporte para formatos de módulo.

Así que ya digo: aún no vale de gran cosa más allá de ser una prueba de concepto.

[Edito] Por supuesto, todo el código está en la página del proyecto en google code y debería compilar sin más que instalar el SDK y el NDK de Android.

SplinterGU

#71
joseba, hacerla correr en android 1.5 o 1.6 es muy complicado?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

El proyecto android esta en tu monolitic google code es eso ?
Mañana me instalo las NDK, lo demás ya lo tengo todo configurao.

josebita

#73
Quote from: SplinterGU on July 28, 2011, 12:02:07 AM
joseba, hacerla correr en android 1.5 o 1.6 es muy complicado?
Sinceramente: no lo sé. Creo recordar que en 1.5 iba a dar problemas por temas de resolución. En ppio. en 1.6 podría funcionar... Es cuestión de probar :)

Quote from: FreeYourMind on July 28, 2011, 12:14:15 AM
El proyecto android esta en tu monolitic google code es eso ?
Mañana me instalo las NDK, lo demás ya lo tengo todo configurao.
Sí, te bajas el código de ahí y te vas a projects/android. Ahí modificas el fichero local.properties con la ruta a donde tengas instalado el SDK.
Y luego haces (desde línea de comandos)
ndk-build
y cuando acabe, enchufas el móvil al ordenador y haces
ant install

Eso lo único que va a hacer es crearte un apk idéntico al que te he dado yo e instalártelo automáticamente. Las instrucciones sólo serán útiles realmente cuando vaya haciendo mejoras en el SVN.

FreeYourMind

Yo prefiero usar el emulador y copiar despues el pkg directamente a la SD.
Thanks.