gentoo linux, java, software libre y otras hierbas
May, 09 2010 - 5:45 pm

Construir aplicaciones Android desde la línea de comandos

android consola

Emacs es algo adictivo sin duda… a tal punto que a veces prefiero programar todo desde la línea de comandos en vez de usar un IDE como Eclipse o Netbans. En esta entrada, que sin duda es de esas que me sirve solo a mi y a unos pocos más, se detalla el proceso de compilación e instalación de aplicaciones para Android sin usar más que el SDK y una línea de comandos. Esta guía es aplicable para cualquier sistema operativo, pero yo lo haré en mi equipo que corre Funtoo Linux.

0. Configuración del entorno de trabajo

Lo primero es tener el SDK instalado, lo cual está explicado aquí: Introducción a la programación con Android. Una vez hayamos instalado y configurado el SDK (incluyendo la adición del directorio tools al path del sistema) y tengamos un proyecto que compilar podemos iniciar el proceso de compilación. Es posible también crear el proyecto desde la línea de comandos así:

android create project -t 1 -p /tmp/ejemplo -k net.casidiablo.ejemplo -a Ejemplo

Donde -t 1 es el id de la plataforma para la que vamos a desarrollar la aplicación (el target). Se puede usar el comando android list targets para ver el listado de targets disponibles. -p indica la ruta de creación del proyecto y -a el nombre de la actividad inicial.

1. Compilación

Es posible usar Ant para compilar y empaquetar todo automáticamente… pero me gusta hacer cada cosa y saber qué está pasando por debajo. Así que haremos todo manualmente. El siguiente comando generará el archivo R.java (si no sabes de lo que hablo: Introducción a la programación con Android):

aapt p -m -J src -M AndroidManifest.xml -S res -I $ANDROID_DIR/android.jar
  • p = package
  • -m -j src indicar el directorio de los archivos fuente
  • -M indicar la ubicación del manifiesto
  • -S indicar la ubicación del directorio de recursos
  • -I $ANDROID_DIR/android.jar añade el paquete android.jar al classpath del proyecto. Importante: en mi caso $ANDROID_DIR apunta a /opt/android/platforms/android-4/ y en el path del sistema se encuentra incluido /opt/android/platforms/android-4/tools/ Es importante tener en cuenta que NO se usa la base del SDK como antiguamente se hacía, sino el correspondiente directorio bajo platforms.

Ahora sí vamos a generar los archivos .class (por supuesto, es necesario tener el JDK de Java instalado):

javac -encoding ascii -target 1.5 -d bin -bootclasspath $ANDROID_DIR/android.jar src/net/casidiablo/ejemplo/*.java

Esto básicamente genera archivos .class en el directorio bin. Si la aplicación usara librerías de terceros, se debería agregar el parámetro -classpath=libs/*.jar

Puesto que los archivos .class están generados para la JVM, es necesario convertirlos a archivos para la Dalvik VM:

dx –dex –output=bin/classes.dex bin # si existieran librerías externas se añade libs/*.jar

Ahora empaquetamos los recursos:

aapt p -f -M AndroidManifest.xml -S res/ -I $ANDROID_DIR/android.jar -F bin/ejemplo.ap_

Ahora empaquetamos usando los bytecodes de Dalvik que creamos (classes.dex) para generar el paquete final:

apkbuilder bin/ejemplo.apk -z bin/ejemplo.ap_ -f bin/classes.dex -rf src -rj libs

Finalmente podemos instalarlo tal como escribí en Manipulación de smartphones con Android desde la consola de Linux:

adb install bin/ejemplo.apk

Links interesantes: How to build Android application package (.apk) from the command line using the SDK tools + continuously integrated using CruiseControl y Developing Android without Eclipse or Ant

3 Comentarios | deja el tuyo

Mar, 27 2010 - 8:22 am

Capturar la pantalla de un dispositivo corriendo Android

Este es un pequeño tip mediante el cual les mostraré cómo capturar la pantalla de un smartphone corriendo Android. Para ello haremos uso del Dalvik Debug Monitor, que se incluye con el SDK de Android. Para instalar el SDK debes seguir los pasos que explico en esta entrada. Además, es necesario configurar la conexión USB del smartphone; si usas Linux deberás seguir estos pasos.

Una vez tengamos instalado y configurado el SDK, basta con conectar el móvil, abrir la herramienta ddms (que se encuentra dentro del directorio tools del SDK), y veremos algo como esto:

Ahora basta con seleccionar nuestro dispositivo en el panel izquierdo y presionar Ctrl+S (o ir al menu Device -> Screen capture…).  Veremos una ventana con la captura y tenemos la opción de guardar la imagen como PNG, por ejemplo:

¡Eso es todo ! Si tiene alguna duda o sugerencia, no dude en comentar.

Nota: Existe una aplicación creada por Koush que se ejecuta desde el Android y que permite hacer esto (más información aquí). El problema es que necesita privilegios de root en el smartphone :mrgreen:

Un comentario | deja el tuyo

Mar, 23 2010 - 2:27 am

Manipulación de smartphones con Android desde la consola de Linux

En esta entrada aprenderemos a manipular dispositivos móviles que tengan Android instalado a través de la consola en Linux. Esto es útil al momento de instalar aplicaciones, navegar entre los directorios del equipo, depurar las base de datos, etc. Además, no hay ningún fabricante de móviles (al menos que yo conozca) que proporcione herramientas para controlar los dispositivos desde Linux. En mi caso, tengo un HTC Tattoo el cual solo puede ser manipulado desde Windows usando HTC Sync :cry:

Con el HTC Tattoo y la mayoría de los smartphones con Android es posible usar la opción de almacenamiento en Linux sin ningún tipo de configuración especial. Simplemente se conecta el equipo, se ejecuta la aplicación Connect to PC y se selecciona Disk Drive con lo cual podremos acceder a la memoria SD. Pero, para realizar operaciones avanzadas necesitaremos seguir estos pasos:

1. Instalar el SDK de Android

La instalación y configuración de Android se explica en la anterior entrada: Introducción a la programación con Android.

2. Configurar el path del SDK

Para trabajar cómodamente con los comandos que nos proporciona el SDK, ejecutaremos el siguiente comando (reemplazando la ruta del SDK por la tuya):

echo "export PATH=$PATH:/ruta/del/sdk/tools"
source ~/.bashrc

3. Instalar la máquina virtual de Java

Recomiendo usar los instaladores de la página de Sun. También puedes hacerlo desde los repositorios de tu distro.

4. Crear una regla en udev

Debemos ahora crear una regla en udev para que al momento de conectar el dispositivo lo podamos usar con el SDK de Android. Así que creamos y editamos como root el archivo /etc/udev/rules.d/99-android.rules y dentro ponemos:

SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", SYMLINK+="android_adb", MODE="0666"

Note que estoy usando el idVendor 0bb4 que es el correspondiente al HTC Tattoo. Para conocer el de su smartphone, debe conectarlo y usar el comando lsusb.

5. Conectarse al dispositivo

Conectamos el smartphone (sí, tenía que estar desconectado :D ), y seleccionamos la opción HTC Sync… por supuesto, vamos a obtener un error que dice que no encontró el HTC Sync en el PC… lo bueno es que con esto se activa el modo depuración del USB, el cual nos permitirá conectarnos desde la terminal de Linux. Primero debemos mirar si se reconoce el dispositivo ejecutando este comando:

adb devices

Si todo sale bien, veremos algo como esto:

* daemon not running. starting it now *
* daemon started successfully *
List of devices attached
HT9A3LG11652    device

HT9A3LG11652 es el nombre de mi dispositivo; este nombre nos permitirá referenciarlo al momento de ejecutar comandos sobre el desde CLI de Linux. Veamos qué podemos hacer ahora que tenemos el smartphone conectado…

adb -s HT9A3LG11652 shell #ejecutar una shell
adb -s HT9A3LG11652 push archivo_local archivo_destino #copiar un archivo al smartphone
adb -s HT9A3LG11652 pull archivo_remoto archivo_local #copiar un archivo desde el smartphone
adb -s HT9A3LG11652 shell rm -r /system/sd/archivo #borrar archivos del smartphone
adb -s HT9A3LG11652 install nombre_aplicacion.apk #instalar aplicaciones
adb -s HT9A3LG11652 uninstall nombre.paquete #desinstalar aplicaciones

Eso es todo por ahora… cualquier duda, comentario o sugerencia es bienvenido. ¡Hasta la próxima!

7 Comentarios | deja el tuyo

« Entradas anteriores