En esta receta veremos lo sencillo que es disponer de Python en un dispositivo con Android.

Android es una plataforma fuertemente ligada a Java. Sin embargo, en el corazón del robot late un GNU (un poco maltrecho, pero ahí está :) ), lo que implica que es posible (y no muy complejo) portar programas nativos. Entre estos programas que se han portado, están los intérpretes de algunos lenguajes conocidos, como Perl, Ruby, Lua o Python. Nos centraremos en este último, pero casi todo el proceso sirve para los demás.

Ingredientes.

  • Un dispositivo con Android 2.1 o superior (aunque quizá también valga para versiones anteriores, no lo sé)
  • El SDK de Android (principalmente, el ADB bien configuradito), aunque esto depende del método empleado
  • Acceso a la página del proyecto: android-scripting

Para la instalación, usaremos SL4A. A día de hoy (25/05/2011) no está disponible en el market. Por cierto, como avisan en la página del proyecto: "To install SL4A, you will need to enable the “Unknown sources” option in your device’s “Application” settings." Es decir, la casilla que hay en “Ajustes → Aplicaciones → Orígenes desconocidos” debe estar marcada.

Instalación de SL4A.

SL4A es un software que gestiona la instalación de los intérpretes y la ejecución y manipulación de lo scripts. Es necesario que primero lo instalemos, para poder avanzar. Se puede hacer de varias formas.

Desde el dispositivo

Esta es la más sencilla: navegas por la página de descargas de SL4A y te bajas la versión más reciente, directamente al dispositivo. Y una vez descargada, la instalas con el gestor de paquetes. Simple.

Desde el PC con ADB

Si, por cualquier cosa, el anterior paso no fuera posible, tienes otra opción. Con ADB configurado correctamente, y desde el PC: ve a la página de descargas mencionada en el paso anterior, y bájate la versión más reciente del SL4A. Desde una consola, entra en el directorio de la descarga, e instala con ADB:

Descargas$ adb install sl4a_r4.apk
1115 KB/s (858471 bytes in 0.751s)
	pkg: /data/local/tmp/sl4a_r4.apk
Success

Instalación del intérprete.

Una vez completado el paso anterior, podemos instalar Python. Para eso, abre el programa recién instalado. Te preguntará si le permites recopilar estadísticas de uso. Una vez que le respondas, te aparecerá una pantalla como esta:

Despliega el menú, selecciona “View” y elige “Interpreters”:

Ahora has cambiado de modo. En este, se muestran los lenguajes que tienes instalados. Seguro que sólo te aparecerá una shell :). Despliega de nuevo el menú, y elige el botón para añadir uno:

Selecciona el de Python, por ejemplo :P :

Se descargará un .apk. Cuando haya terminado, ábrelo para que lance el instalador. Lo instalas como cualquier otra aplicación. Al final, te pedirá si deseas abrirlo, y como creo que sí deseas, dale a “Abrir” :D Te saldrá algo como esto:

Este no es el intérprete de Python, sino un gestor, que se lo descargará, junto con algunos módulos y varios ejemplos. Dale a “Install” para que empiece. Tardará algún tiempo, dependiendo de la potencia de tu cacharro y del ancho de banda. Paciencia :)

Una vez haya terminado, te dirá que todo ha ido bien, y tal. Cierra este gestor, y volveremos al SL4A. Ahora, además de la shell, podrás ver el logo de Python, y la versión instalada:

Si lo pulsas, te debe abrir un intérprete de Python, con el que podrás jugar todo lo que quieras. No te muestro una captura porque a mi no me funciona, por alguna razón :( Si le das al botón “back” de tu cacharro, volverás a la pantalla inicial, en la que se mostrará la lista de scripts de prueba que se han instalado:

Si pulsas sobre cualquiera de ellos, te saldrá un menú con algunas opciones: ejecutar (con y sin terminal), editar, renombrar y guardar:

Si editas uno de ellos, por ejemplo… el ‘hello world!’, verás algo como esto:

Si te fijas, verás que el script importa un módulo llamado “android”, desde el que se tiene acceso a muchas cosas interesantes de Android. En la página del proyecto tienes un manual de referencia de la API. Si le echas un vistazo, verás que tienes acceso a muchas cosas. Pero eso ya te lo dejo a ti, pues la diversión no ha hecho más que empezar :)



blog comments powered by Disqus