Cuando empezamos a programar con Android trabajamos con un entorno que lleva todo integrado (IDE). Estos entornos como Eclipse o Netbeans facilitan la codificación de la aplicación y su depuración tanto en un dispositivo emulado como en uno real. Si trabajamos con un dispositivo emulado podemos probar cualquier combinación de hardware, desde pantallas pequeñas de 4 pulgadas hasta las pantallas que usan las tabletas de 10 pulgadas sin necesidad de comprar el dispositivo real. Aunque el código funciona en el emulador, es importante probarlo en un dispositivo real ya que el comportamiento del emulador no es ideal y la ejecución es varios ordenes de magnitud más lenta (dependiendo del PC que tengamos).

Introducción

Para depurar la aplicación en un terminal real el primer paso es que el sistema operativo lo reconozca. Con las versiones anteriores a Kit Kat este paso era sencillo. A partir de Kit Kat es necesario realizar un par de operaciones antes de que el sistema lo reconozca. Entre estas operaciones está instalar los drivers y dar permisos al PC para que se conecte al terminal. Los siguientes pasos se aplican a Ubuntu 14.04 y a los terminales que llevan Android 4.4. El terminal elegido es el Aquaris E5 FHD aunque se pueden aplicar a otros terminales (ya sean o no de bq).

Actualización: parece que tanto los terminales de la serie E como la Edison 3 comparten el mismo idProduct. En ese caso es suficiente con configurar el sistema una única vez para trabajar con cualquiera de los terminales que llevan Kit Kat.

Condiciones iniciales

  • Ubuntu 14.04 de 64 bits. Tiene que funcionar también en otras distribuciones de GNU/Linux que sean modernas.
  • Aquaris E5 FHD. Por cuestión de tiempo sólo pondré los pasos para este modelo pero indicaré como obtener los valores para otros terminales.
  • Cable USB para conectar el teléfono al PC.

Preparando el sistema

Aunque podemos usar la versión de ADB que viene en el SDK de Android con ADT o Android Studio he optado por usar la versión que viene con los repositorios de Ubuntu. Una vez hemos configurado los archivos del sistema no deberíamos tener problemas en usar una u otra herramienta.

Instalamos ADB con el siguiente comando:

sudo apt-get install android-tools-adb

El comando lsusb nos muestra los dispositivos USB que están conectados al bus del sistema. Por alguna razón el Aquaris E5 FHD no aparece directamente sino que está un poco oculto. Necesitamos dos valores para hacer que ADB detecte a los terminales con Android 4.4. El primero de ellos es el idVendor mientras que el segundo es idProduct. Para conocerlos ejecutamos el siguiente comando:

lsusb -v > dispositivos.txt

Abrimos el archivo con nano dispositivos.txt y buscamos la cadena de texto bq (o el nombre del fabricante que tengamos). En mi caso este es el contenido del archivo:

Información del comando lsusb para un Aquaris E5 FHDInformación del comando lsusb para un Aquaris E5 FHD

Trabajando con el sistema

El idVendor debe de ser el mismo para todos los modelos de bq. El idProduct es el elemento que cambiará según el terminal que tengamos. Vamos a añadir esta información a las reglas de udev. Cuando conectamos un dispositivo USB al PC el subsistema que se encarga de gestionarlo se llama udev. Los terminales de la serie Aquaris E y la Edison 3 comparten el mismo idProduct.

sudo nano /etc/udev/rules.d/51-android.rules

Añadimos las siguientes líneas:

# ADB para la gama Aquaris E y la Edison 3 SUBSYSTEM=="usb", ATTR{idVendor}=="2a47", ATTR{idProduct}=="0c02", MODE="0600", OWNER="mimecar"

Los campos que están remarcados son los que tenemos que modificar. Fijaros que el identificador no lleva la cadena inicial que indica que es un valor en hexadecimal. Para los terminales de bq el primer campo será fijo y cambiarán el segundo y el tercero. El segundo es el idProduct y lo tenemos que sustituir por el valor que hemos obtenido antes. En OWNER ponemos el nombre de nuestro usuario en GNU/Linux.

Si trabajamos con varios terminales podemos añadir una línea por terminal al archivo 51-android.rules respetando la estructura anterior. El último paso es crear el archivo adb_usb.ini y poner el idVendor.

nano ~/.android/adb_usb.ini

Pegamos el siguiente contenido (para terminales de bq):

# ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT. # USE 'android update adb' TO GENERATE. # 1 USB VENDOR ID PER LINE. # ie0x2207 0x2a47

Últimos pasos

Desconectamos el teléfono del PC y reiniciamos el servidor de ADB con los siguientes comandos:

adb kill-server  adb start-server  * daemon not running. starting it now on port 5037 *  * daemon started successfully *

 

Comprobamos si ADB detecta el teléfono.

adb devices  List of devices attached  CB000000 offline

 

Si hemos hecho los pasos de forma correcta nos aparecerá el número de serie y el texto offline. A partir de Kit Kat se ha introducido una capa extra de seguridad. Esta capa obliga a que el usuario acepte la conexión de ADB con el teléfono desbloqueado. En caso de no hacerlo la conexión se corta. Aceptamos la conexión en el teléfono.

Petición de la conexión de ADB

adb devices  List of devices attached  CB000000 device

 

Al ejecutar de nuevo adb devices veremos el texto device, que indica que todo está funcionando de forma correcta. Para asegurarnos podemos usar los siguientes comandos de ADB que hacen una captura de la pantalla.

adb shell /system/bin/screencap -p /sdcard/screenshot.png adb pull /sdcard/screenshot.png screenshot.png

Abrimos el archivo para ver una captura de pantalla realizada con ADB.

Conclusiones

Antes de publicar una aplicación en Google Play conviene depurarla en un dispositivo real. Para hacerlo es necesario en primer lugar que el sistema operativo reconozca el teléfono o la tableta. En las versiones anteriores a Kit Kat era suficiente con conectar el terminal y conectarnos con ADB para empezar la depuración. A partir de Android 4.4 es necesario realizar algunos pasos extras para lograr lo mismo. Los pasos no son complicados aunque requieren usar un poco la consola. Si bien me he centrado en un modelo concreto de bq, el artículo se puede aplicar a cualquier teléfono o tableta que usen Kit Kat. Sólo deberemos modificar los valores idVendor / idProduct para adaptarlo a nuestras necesidades. Recordad que hay que modificar dos archivos, el correspondiente a udev y el que controla ADB.

Referencias

0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.