Usuario:Juanda/android/adb

=Herramienta adb=

¿Qué es ADB?

 * ADB son las siglas de Android Debug Bridge
 * Es una herramienta de desarrollo incluida en el SDK de Android.
 * Comunica el dispositivo Android o el emulador con el ordenador.
 * Sirve para instalar aplicaciones, ver ficheros de log, hacer push o pull de ficheros...

Cómo usar ADB

 * Debemos instalar el SDK de Android o el ADT-Bundle
 * Está situado en el directorio platform-tools.
 * Es conveniente añadirlo en la variable de entorno $PATH (fichero $HOME/.bashrc en Linux):
 * No es necesario ser root para utilizarlo
 * Normalmente se utiliza vía USB pero también puede hacerse vía wifi.

Windows

 * Tendremos que descargar el driver adb para el dispositivo.
 * En la web de Android hay un listado de enlaces para la descarga de los drivers de los principales fabricantes.
 * Puedes encontrar un driver genérico que se encuentra en la carpeta android-sdk-windows\usb_driver del SDK Android.
 * Lo más probable es que tengas que utilizar el driver del fabricante.
 * A veces también hace falta otro ejecutable adb distinto al que aparece en el Android SDK.
 * Para los que no aparecen habrá que ir a sus webs o contactar con su servicio de soporte.
 * No siempre existen los drivers o funcionan como debieran ¡ojo!
 * En ocasiones para que funcione se utiliza el driver de google pero modificando el fichero de instalación del driver: adb_usb.ini

Mac

 * No hace falta hacer nada.
 * Filosofia MAC: O funciona directamente o no funciona.

Ubuntu

 * Es conveniente leer la documentación sobre udev (gestión dinámica de dispositivos en Linux)
 * Tendremos que añadir el fichero 51-android.rules con los permisos y texto que figura a continuación:
 * Tendremos que conocer el identificador del dispositivo (ID_DISPOSITIVO), así que conectamos el dispositivo y observamos las trazas del fichero de logs del sistema:
 * De las trazas observamos que el dispositivo se conecta como bus:3, device: 6


 * Ejecutamos lsusb para ver el vendor id del dispositivo, en nuestro caso 2207:0010:


 * Actualizamos el fichero anterior:
 * Reiniciamos el servicio de udev:


 * Paramos y arrancamos adb (android device bridge) y comprobamos la lista de dispositivos:

Configuración del dispositivo

 * En Android 4 la habilitación del USB Debug está en Ajustes > Opciones de Desarrollo.
 * Nota: A partir de Android 4.2, las opciones de desarrollo no están visibles por defecto: "To make it available, go to Settings > About phone and tap Build number seven times. Return to the previous screen to find Developer options."

adb help

 * provee numerosas funciones que se pueden ver en detalle mediante el comando:
 * Veremos a continuación las más importantes

Comprobación comunicación

 * Mediante el comando:
 * Si nos sale un número de serie, es que todo está correcto:

Comunicación vía shell

 * Mediante el comando:
 * Se pueden mandar comandos individuales de shell mediante:
 * Desde Android 4.2.2 se pide autorizar el acceso a cada ordenador desde una ventana emergente el el dispositivo movil.
 * Si el terminal resulta pequeño podemos ejecutar el siguiente comando:

Transferencia de ficheros

 * Copiamos un fichero del ordenador al movil.
 * Se pueden incluir tanto el path local como el remoto.
 * Se pueden incluir tanto el path local como el remoto.


 * Copiamos un fichero remoto (del movil) al PC.
 * Copiamos un fichero remoto (del movil) al PC.

Ver el fichero de log en tiempo real

 * Devuelve una ingente cantidad de eventos escritos en diversos registros sobre el funcionamiento del sistema
 * Es útil usar algún filtro o redirigir a un fichero.
 * Es útil usar algún filtro o redirigir a un fichero.

Instalación de aplicaciones

 * Los ficheros (aplicaciones) deben tener extensión .apk
 * Es necesario tener el side-load marcado.
 * : Para actualizar
 * adb uninstall Aplicacion.apk: Para desinstalar
 * adb uninstall Aplicacion.apk: Para desinstalar

Error "Device not found"

 * Se producen cuando adb no encuentra el dispositivo.
 * Podemos reiniciar el servicio de adb:
 * Hay que asegurarse que la opción USB debugging o Android Debug Bridge desde Ajustes->Herramientas de Desarrollo (varía un poco de versión a versión).

Errores habituales

 * No se reconoce el dispositivo:
 * False de permisos:
 * Driver incorrecto
 * Configuración errónea fichero udev
 * Reiniciar udev:
 * Reiniciar servicio adb:

Error en funcionamiento de dispositivos físicos y emuladores

 * El error es el siguiente:
 * [2013-02-22 13:55:20 - adb] Unexpected exception 'Cannot run program "/home/juanda/Android/sdk/platform-tools/adb": java.io.IOException: error=2, No existe el archivo o el directorio' while attempting to get adb version from '/home/juanda/Android/sdk/platform-tools/adb'


 * Solución, instalar los siguientes paquetes:

Primer método: desde el terminal

 * Habilitar adb desde el dispositivo movil (debemos ser root):


 * Para deshabilitarlo:

2º método: desde el PC

 * Desde un equipo, con acceso USB
 * El puerto no hace falta, por defecto es el 5555
 * Para volver a escuchar por USB:
 * Primer método: hay que teclear mucho desde el movil, ¡muy pesado!
 * Segundo método: hace falta llevar el cable usb, ¡una lata!
 * Tercer método: Instalar una aplicación en el móvil: adbWireless, WiFi ADB o ADB WiFi. ¡Necesitan acceso root!

Eclipse y adb

 * Si adb no está correctamente configurado desde Eclipse no funcionará.
 * Indicar que queremos desplegarlo en el dispositivo al ejecutar la aplicación
 * Cuando ejecutemos la aplicación veremos una pantalla similar a la siguiente:
 * Eclipse->Windows->Open Perspective->DDMS


 * Aparecerán los emuladores que tengamos corriendo y los dispositivos físicos que estén enchufados a la entrada USB del PC
 * En caso de tener un solo dispositivo disponible esta pantalla no aparecerá.

Actualización fichero /etc/hosts

 * El comando para ver las interfaces del movil es netcfg (no ifconfig)
 * El fichero hosts se encuentra en /system/etc/hosts
 * Obtenemos el fichero hosts del movil para modificarlo:


 * Añado una o varias entradas en el fichero pero hay un error al hacer el push:


 * En muchos dispositivos la partición /system se monta como solo lectura así que hay que montarla con permisos de escritura.
 * A continuación todas las trazas al cambiarlo en mi sistema:


 * La partición ya tiene permisos de lectura, hacemos el push:
 * ¡Vaya! Ahora fallan los permisos....


 * Cambiamos permisos fichero /etc/hosts para su sustitución:


 * Comprobamos que todo ha ido bien y ponemos todo como estaba: