MIT App Inventor (https://appinventor.mit.edu/) es un entorno de programación basada en bloques para crear aplicaciones para teléfonos Android, ahora también para iPhones de forma sencilla.
Pero a veces nos faltan componentes, como por ejemplo la lectura de NFCs, por lo tanto es el momento de crearnos nuestras extensiones. Una extensión o fichero .aix se compone normalmente de una clase (No visuales) pero también pueden contener tener varias que instalaremos en nuestro proyecto, de la misma forma que instalamos componentes visuales, y llamaremos a sus métodos públicos o haremos uso de sus propiedades desde el interfaz de bloques.
Si nuestro programa precisa de una lógicas más complejas que complica programarla con los bloques estándar, especialmente a los que estamos acostumbrados a la programación con editores de texto, podemos generar clases con nuestra funcionalidad en java añadirlas a la extensión y llamar luego a los métodos correspondientes desde el entorno de bloques. Así generamos la parte básica y visual con en AppInventor y le añadimos la lógica en una extensión que programaremos en java.
La verdad es que existen muchos libros y documentación para la programación por bloques de AppInventor pero no tanta para la generación de extensiones por lo que he decidido generar una serie de POST para explicarlo y así de forma fácil (si sabes programar java) generar nuestras ampliaciones de funcionalidad.
Antes de comenzar deberemos de instalarnos algunas cosas en nuestro ordenador, en mi caso utilizo archlinux, como es:
- Java JDK8 si tenemos versiones superiores tendremos problemas, en mi caso con archlinux es mu sencillo pues con el comando «archlinux-java» puedo conmutar a la versión deseada.
└─> archlinux-java status Vemos las disponibles y cual esta por defecto.
Available Java environments:
java-11-openjdk
java-21-openjdk
java-22-openjdk (default)
java-8-openjdk
└─> sudo archlinux-java set java-8-openjdk Activamos la versión 8 por defecto
└─> archlinux-java status
Available Java environments:
java-11-openjdk
java-21-openjdk
java-22-openjdk
java-8-openjdk (default)
También podemos validar la versión que usamos directamente preguntando al comando.
└─> java -version
openjdk version "1.8.0_422"
OpenJDK Runtime Environment (build 1.8.0_422-b05)
OpenJDK 64-Bit Server VM (build 25.422-b05, mixed mode)
└─> javac -version Para confirmar que el compilador también utiliza la 1.8
javac 1.8.0_422
- Instalaremos Ant que es una herramienta de línea de comando que se utiliza para construir proyectos Java.
└─> ant -version Así verificamos que lo tenemos instalado y dentro del PATH
Apache Ant(TM) version 1.10.14 compiled on July 11 2024
- La herramienta GIT para poder descargar el repositorio de fuentes necesarias para generar extensiones AppInventor
- Descargar el repositorio https://github.com/mit-cml/extension-template, aunque existe una opción mejor que realizar un clon y es el siguiente comando que no solo nos descarga el repositorio sino que nos prepara la estructura para empezar a trabajar con nuestra extensión.
└─> git clone --recurse-submodules https://github.com/mit-cml/extension-template.git Ejemplo1
No genera un directorio llamado Ejemplo1 que sera el nombre de nuestra extensión, podremos sustituirlo por el que deseemos, con la siguiente estructura:
- Fichero build.xml que utiliza la herramienta Ant para compilar y generar el paquete de la extensión (.aix)
- Directorio src que es donde pondremos nuestros fuentes, que hablaremos en próximos capítulos.
- directorio lib con ficheros jar de librerías necesarias para AppInventor.
- Fichero README.md que explicaremos nuestra extensión sobre todo si queremos subirla por ejemplo a nuestro repositorio de GitHub
- update-deps.sh upgrade-appinventor.sh Scripts que nos permiten tener actualizadas las librerias necesarias.
Para generar nuestra extensión solo tendremos que ejecutar ant extensions, primero pongramos código claro esta y eso lo veremos en el próximo POST, y mi recomendación es antes realizar ant clean para limpiar directorios.
Después de generar nuestra extensión se generaran dos directorios, uno llamado build que se utiliza para la generación de ficheros intermedios antes de realizar el paquete .aix y que se borra con ant clean y otro llamado out que tendrá nuestro fichero .aix que es el que instalaremos en la aplicación WEB de desarrollo de AppInventor.
En el próximo POST generaremos nuestra primera extensión y poco a poco iremos ampliando la información para sacarle todo el partido a las extensiones.