jueves, 29 de noviembre de 2007

Programación en Maemo 4.0 (OS2008) #1

A raíz de la falta de conocimiento y tutoriales en español para desarrollar en las Internet tablets, voy a empezar a escribir una serie de tutoriales para programar en Maemo. Como muchos ya saben (otros no), Maemo es una plataforma opensource de desarrollo para las Internet tablets de Nokia y otros dispositivos basados en Linux.
Este tutorial y los que le siguen van a estar basados en Maemo 4.0 (OS2008) pero pueden servir para cualquier versión, salvando algunas diferencias de librarías o componentes.
En mi caso todo fué instalado y ejecutado en una máquina con Ubuntu Gutsy (7.10) pero debería funcionar en cualquier distro sin problemas (o casi).
Este tutorial fué escrito de memoria y es posible que hayan partes o lagunas que no recuerde, si descubren un error o paso que falte por favor me avisan y lo corrijo.


Armando el entorno de desarrollo

Para poder desarrollar en Maemo, son necesarios los siguientes componentes que crearán nuestro entorno de desarrollo y pruebas:

- Scratchbox: kit de herramientas para cross compilation que hace más facil el desarrollo embebido de aplicaciones linux. Las nokia tablets utilizan procesadores ARM que soporta perfectamente scratchbox.
- Maemo SDK: ya lo explicamos anteriormente.
- Xephyr: necesario para correr el entorno de desarrollo Maemo. Es un Xserver basado en kdrive, corriendo dentro de un Xserver host.

1- Lo primero que debe hacerse es bajar el script que instalará Scratchbox automáticamente bajando los paquetes de internet. El script se puede obtener desde esta direccion http://repository.maemo.org/stable/chinook/maemo-scratchbox-install_4.0.sh

Una vez bajado el script hacemos lo siguiente...

$ sudo chmod a+x ./maemo-scratchbox-install_4.0.sh
$ sudo ./maemo-scratchbox-install_4.0.sh

y comenzará la instalación automática. Seguir las instrucciones del script.

El directorio elegido por mí para la instalación es /scratchbox.
Al finalizar con la instalación, deben agregarse los usuarios que van a utilizar scratchbox al grupo
"sbox". Este paso es importante sino no se podrá tener acceso al login de scratchbox.


2- Una vez que tenemos Scratchbox instalado, debemos instalar el Maemo SDK, para eso bajamos el script desde esta ubicación http://repository.maemo.org/stable/chinook/maemo-sdk-install_4.0.sh

Lo ejecutamos fuera de scratchbox:

$ sh maemo-sdk-install_4.0.sh

En mi caso seleccioné la opcion "Runtime Environment + All Dev and Dbg Packages" para poder desarrollar sin limitaciones.


3- Lo último que nos queda es instalar es el Xephyr, en ubuntu es tan sencillo como correr lo siguiente fuera de scratchbox:

$ sudo apt-get install xserver-xephyr

Eso es todo para armar nuestro entorno de desarrollo.



Probando entorno de desarrollo

1- Primero iniciamos los servicios de Scratchbox:

$ sudo /scratchbox/sbin/sbox_ctl start


2- Levantamos Xephyr:

$ Xephyr :2 -host-cursor -screen 800x480x16 -dpi 96 -ac

Veremos dentro de nuestro X una ventana sin nada dentro como si levantáramos un X sin entorno gráfico.


3- Ingresamos al Scratchbox con el usuario con el grupo sbox (si hacen todo en la misma consola deben salir y entrar nuevamente para tomar el grupo sbox por primera vez)

$ /scratchbox/login

Esto nos debería loguear al scratchbox, veremos un prompt diferente parecido a esto (si no pueden ingresar, asegurense de que el usuario esté en el grupo sbox):

[sbox-SDK_ARMEL: ~] >

Con este comando dentro de Scratchbox podemos cambiar de arquitectura en cualquier momento:

[sbox-SDK_ARMEL: ~] > sb-conf select CHINOOK_X86

Y el prompt cambiará a:

[sbox-SDK_X86: ~] >


4- Ahora debemos levantar el escritorio Hildon:

[sbox-SDK_ARMEL: ~] > export DISPLAY=:2
[sbox-SDK_ARMEL: ~] > af-sb-init.sh start


Resumen

La combinación entre Scratchbox, Maemo SDK y Xephyr nos permite no sólo tener un entorno para compilar nuestras aplicaciones para diferentes arquitecturas, sino que nos crea un "emulador" de una internet tablet de Nokia. Esto nos permitirá probar nuestras aplicaciones sin necesidad de tener un aparatos de esos, aunque siempre es recomendable antes de lanzar públicamente una aplicación, probarla realmente en un dispositivo real.


Proximo tutorial: "Hello world"


1 comentario:

NeoIvan dijo...

epale, me agrada la idea de tu tutorial, gracias =)