Programar aplicaciones para dispositivos Android significa programar en Java, por lo que si no conoces este lenguaje lo ideal sería ponerse manos a la obra con ello para obtener unos resultados óptimos. Pero ¿qué ocurre si desconocemos este lenguaje? Es posible que seamos detractores de Java, o simplemente que seamos unos completos ignorantes en este tema y no tengamos tiempo para formarnos, pero aún así necesitemos realizar algún programa en Android. Hay alternativas.
El equipo de “Android Scripting” nos trae la “Scripting Layer for Android (SL4A)”, que nos permite editar y ejecutar scripts e intérpretes interactivos directamente en los dispositivos Android. Estos scripts tienen acceso a muchas de las APIs que están disponibles para las aplicaciones “pata negra”, pero con una gran simplificación en los interfaces que nos permiten, en muchos casos, ser más eficientes en el desarrollo de aplicaciones que no necesiten de gran complejidad y, lo más importante, se puede hacer desde el propio dispositivo y sin necesidad de un PC.
¿Cuáles son los lenguajes soportados?
Por el momento se dispone de soporte para Python, Perl, JRuby, Lua, BeanShell, Javascript, Tcl y shell, aunque los desarrolladores indican que planean añadir más. Hay un desarrollo aparte para PHP pero no forma parte de SL4A. Como punto fuerte de la SL4A indicar que todos los lenguajes usan lo que llaman “Android Facades“ que exponen las APIs disponibles desde llamadas JSON RPC por lo que usan, sea el lenguaje que sea, el mismo set de APIs.
También destacar que, aunque podamos suponer que estos scripts sean interpretados para su ejecución, no estamos (totalmente) en lo cierto. Por ejemplo, BeanShell se ejecuta en la JVM y Lua,Python y Perl se ejecutan de forma nativa con sus versiones en C. Y por supuesto toda la API RPC está compilada a Dex por lo que no hay más interpretación (más que la propia “reflection”).
¿Funciona en todos los dispositivos Android?
Sí y no. Funciona perfectamente en los dispositivos con arquitectura ARM ya que los compiladores nativos están compilados para estos cacharros, pero los que tengan otra arquitectura diferente (como la x86) tendrán que conformarse con los lenguajes cuyos intérpretes estén montados sobre la JVM, como JRuby, BeanShell o Rhino. En el emulador de Android funciona perfectamente.
Y, ¿cómo es un ejemplo de todo esto?
En la página de SL4A tenemos la wiki para programadores en la que, además de toda la información necesaria sobre la API, instalación y funciones avanzadas, también podemos consultar una gran variedad de códigos de ejemplo en la parte de tutoriales. Hay desde clientes de Twitter hasta un bot para IRC, pasando por clientes metereológicos o localizadores GPS, pero el ejemplo que os ponemos a continuación es el de un scanner de códigos de barras en Python para libros.
import android droid = android.Android() code = droid.scanBarcode() isbn = int(code[‘result’][‘SCAN_RESULT’]) url = “http://books.google.com?q=%d” % isbn droid.startActivity(‘android.intent.action.VIEW’, url)
Como veis la simplicidad es alucinante, con 6 líneas de código tenemos un software que escanea un EAN desde la cámara de fotos, lo procesa y busca libros en Google Books con dicho código asociado. Más fácil imposible. Para terminar, aquí debajo os dejamos un video con una demostración de uso en un dispositivo, incluyendo el editor adaptado para móviles.
Más información | Página de SL4A