10 operaciones útiles para Android (vía ADB)
Con el SDK de Android, Java, y los drivers correspondientes instalados en nuestro sistema (Windows, Linux o Mac) tendremos un conjunto de herramientas interesantes para utilizar con nuestro términal.
Si no tienes o no estás seguro de tener correctamente instalados estos tres puntos, antes de continuar, lee las instrucciones en el artículo Preparar el SDK para hacer capturas de pantalla y logs.
Para algunas de estas operaciones será necesario tener acceso root.
Entre las múltiples utilidades que ofrece el SDK, existe una particularmente útil: ADB (Android Debug Bridge), que es algo así como un intermediario entre nuestro sistema operativo y nuestro terminal Android.
Con él se pueden realizar varias tareas, como veremos a continuación, de una forma sencilla y rápida, con sólo conectarlo al USB.
NOTA: La utilidad ADB.EXE está ubicada en la carpeta tools del SDK, por lo que necesitarás estar en esa carpeta. Una buena idea es añadir esta carpeta al PATH del sistema, para no tener que encontrarte ahí necesariamente.
1. Comprobar dispositivos conectados
Un buen punto para empezar, sería el de comprobar si realmente nuestro sistema ha detectado el terminal al conectarlo al USB. Escribimos:
adb devices
Esto debería mostrarnos una lista de los terminales Android conectados al sistema (físicos, emuladores, etc...):
List of devices attached
HT999KF99999 device
En este caso, el dispositivo HT999KF99999 ha sido detectado. Al lado nos muestra el estado del dispositivo (device = conectado, offline = desconectado, etc...).
¿Y en el caso de que tuvieramos varios dispositivos? ¿Todas las acciones que realicemos se harían en todos los dispositivos? Fácil, solo hay que especificar el parámetro -s y el número de serie del dispositivo, seguido por el comando u operación a realizar:
adb -s HT999KF99999 […]
NOTA: Si no queremos estar escribiendo siempre esos parámetros porque vamos a usar siempre ese dispositivo, podemos establecer una variable de entorno ANDROID_SERIAL con el número de serie.
2. Conectar Android al PC vía WIFI (sin USB)
Otra cuestión bastante útil es la de realizar tareas con el móvil (O incluso enviar ficheros) a través de WIFI, sin necesidad de tener el terminal conectado al USB.
Para ello, lo conectamos al USB para configurarlo:
adb shell setprop service.adb.tcp.port 4444
adb tcpip 4444
Establecemos un puerto TCP para realizar la conexión. En este ejemplo hemos utilizado el puerto 4444/TCP. Acto seguido, obligamos al terminal a reiniciarse en modo conexión vía TCP/IP. Nos mostrará un mensaje similar a este:
restarting in TCP mode port: 4444
Obviamente, debemos estar conectados a una red WiFi, ya que vía GPRS/3G no es posible conectarnos (y no sería recomendable). Si no sabemos la IP privada que tenemos en nuestro terminal, escribimos lo siguiente:
adb shell getprop | findstr ipaddress
Lo que nos devolverá algo similar a lo siguiente, que es la IP del terminal adquirido vía DHCP.
[dhcp.tiwlan0.ipaddress]: [192.168.0.3]
Ahora ya podemos desconectar el terminal del USB. Con esa IP y el puerto TCP, podemos realizar una conexión:
adb connect 192.168.0.3:4444
Lo que debería devolver el siguiente mensaje:
connected to 192.168.0.3:4444
Cuando queramos volver a utilizar el modo normal, escribimos:
adb usb
Y ya podemos conectarlo al USB.
Si todo esto te parece demasiado complicado, recientemente han publicado una aplicación llamada adbWireless, de la que hablan en El Androide Libre.
3. Copiar archivos al terminal
Copiar archivos al terminal es muy sencillo. La sintaxis es la siguiente:
adb push c:\texto.txt /sdcard/texto.txt
El segundo parámetro (c:\texto.txt) indica el fichero que queremos copiar (origen). Como es lógico, podemos obviar la ruta si tenemos el archivo en nuestra carpeta actual.
El tercer parametro es la ruta donde se va a copiar el archivo (destino). Como también es lógico, podemos obviar el nombre del fichero si queremos que conserve el mismo nombre.
En este caso lo estamos copiando a la carpeta sdcard que normalmente es donde se almacenan los datos de la tarjeta SD. También remarcar que esta forma de copiar no necesita montar la tarjeta en Windows, ya que funciona vía directa por ADB.
4. Copiar archivos desde el terminal
De forma análoga al anterior, también existe una forma de copiar ficheros desde el móvil a nuestro PC:
adb pull /data/app/com.emezeta.budaphone.apk c:</code>
Como segundo parametro tenemos la ruta del fichero de aplicación BudaPhone. Esta ruta puede cambiar dependiendo del terminal y/o la ROM que tengamos.
Como tercer parámetro, tendríamos la ruta donde queremos que se guarde. Se puede utilizar un . (punto) para indicar que se guarde en la ruta actual.
Si quieres tener más destreza en el manejo de comandos similares, te aconsejo que le eches un vistazo al artículo 10 comandos para trabajar en Linux.
5. Examinar info de depuración (aka logcat)
Un recurso valiosísimo para los programadores (y para todo aquel que quiera depurar o descubrir motivos de errores) es el de poder acceder al logcat de Android.
El logcat es un fichero de registro donde se guarda todo lo que ocurre en nuestro móvil: errores, problemas, advertencias e incluso avisos. Podemos ver los últimos mensajes con un sencillo:
adb logcat
Sin embargo, la potencia de este comando está en sus filtros y parámetros:
adb logcat dalvikvm:D *:S
Muestra los mensajes de depuración de la máquina virtual Dalvik, silenciando el resto.
Hay varios niveles más, detallados al final del artículo capturas de pantalla y log de registro en Android. Incluso, utilizando el parámetro -v es posible formatear con cierta información relevante:
adb logcat -v process
Que muestra la información con un mensaje previo con información acerca del PID del proceso que lo efectuó. O, entre otros, información sobre el momento exacto (timestamp) de cuando ha ocurrido:
adb logcat -v time
6. Instalar aplicaciones
Una opción muy interesante para aquellos que trasteamos mucho con aplicaciones (y sobretodo para desarrolladores) es la de instalar ficheros apk (aplicaciones) directamente desde la terminal de nuestro PC.
Esto nos da varias ventajas. En primer lugar podemos tener almacenada una amplia biblioteca de aplicaciones e instalarlas a un sólo golpe de teclado, sin necesidad de ir paso a paso por el Market (sobre todo si se trata de varias aplicaciones).
Si quieres una aplicación para hacer copia de seguridad de tus aplicaciones, te recomiendo echar un vistazo a Android Commander
En segundo lugar, tenemos la posibilidad de instalar aplicaciones que no estén presentes en el Market, o sin necesidad de subirlas para utilizarlas.
adb install aplicacion.apk
Con este sencillo comando bastará. Adb hará el resto. También es posible utilizar los siguientes parámetros:
adb install -r facebook.apk
Reinstala la aplicación de Facebook, sin eliminar los datos de la misma.
adb install -s angrybirds.apk
Instala la aplicación en la tarjeta SD en lugar de guardarla en el teléfono, útil para terminales antiguos con poco espacio o para usuarios con demasiadas aplicaciones y quieren utilizar la tarjeta SD para ese fin.
7. Desinstalar aplicaciones
Si es posible instalar aplicaciones, también lo será desinstalar. Sólo que en este caso, no se especifica el fichero apk, sino el nombre del producto:
adb uninstall com.emezeta.mzspray
Muy útil para desinstalar rápidamente y de un plumazo, si hemos estado probando varias aplicaciones divertidas para probarlas.
También es posible, desinstalar la aplicación sin eliminar los datos de la misma, con el parámetro -k.
8. Reiniciar el dispositivo
Si necesitamos reiniciar nuestro terminal, es muy sencillo hacerlo desde ADB:
adb reboot
Además, podemos seleccionar dos tipos de reinicios adicionales:
adb reboot bootloader
Bootloader es el cargador principal de Android, desde donde se pueden realizar varias operaciones con respecto al funcionamiento del terminal (cambio de firmware, etc...).
adb reboot recovery
Recovery es una especie de panel de recuperación, desde el cuál se pueden realizar tareas varias de recuperación, como puede ser particionamiento, wipes, flasheo, etc...
NOTA: No reiniciar en estos modos si no se sabe lo que se está haciendo. Se pueden realizar cambios que dejen al sistema operativo en un estado no funcional.
9. Remontar la partición del sistema
Otra de las tareas útiles, para aquellos que quieren adentrarse en el mundo del funcionamiento de Android es el de volver a montar la partición de sistema de Android con permisos de lectura y escritura, ya que en principio, sólo tiene permisos de lectura.
adb remount
Esto permitirá realizar cambios de escritura en la partición /system.
10. Ejecutar comandos en el entorno Android
Puesto que Android funciona con una base de kernel de Linux, es posible lanzar comandos en la terminal propia de android. Para ello podemos abrir una consola con el siguiente comando:
adb shell
O lanzar comandos directamente:
adb shell [comando]
Esto abre un amplio abanico de posibilidades (sobre todo para usuarios root) a los que propongo empezar con unos sencillos, para ir conociendo el sistema:
adb shell df -h
Que nos mostrará las particiones montadas y el espacio libre, entre otros datos. O por otra parte:
adb shell ls -lh /
Que nos mostrará los ficheros y carpetas de la carpeta raiz del teléfono.