Hace tiempo que juego con el SDK de Android, ADB y sus máquinas vistuales, pero hoy, por primera vez, he probado a correr una aplicación directamente en un dispositivo conectado al ordenador.
Soy un tio raro, y para esto no iba a ser menos. El dispositivo es un CUBOT GT99, un teléfono móvil chino con un procesador Mediatek, y como era de esperar no ha sido fácil. Al conectarlo y comprobar si funcionaba me he encontrado con:
~$ adb devices
List of devices attached
???????????? no permissions
Claro, es lo Google dice al respecto:
If you’re developing on Ubuntu Linux, you need to add a udev rules file that contains a USB configuration for each type of device you want to use for development. In the rules file, each device manufacturer is identified by a unique vendor ID, as specified by the ATTR{idVendor} property. For a list of vendor IDs, see USB Vendor IDs, below.
El identificador que aparece para Mediatek en la lista es 0e8d y como suele pasar en estos casos no era correcto para este dispositivo. Así que me puse las gafas, volví a conectar el teléfono y…
~$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 003 Device 002: ID 1058:1021 Western Digital Technologies, Inc. Elements 2TB
Bus 002 Device 003: ID 048d:1336 Integrated Technology Express, Inc.
Bus 002 Device 004: ID 07d1:3c0a D-Link System DWA-140 RangeBooster N Adapter(rev.B2) [Ralink RT3072]
¡Sorpresa! Ningún dispositivo concide con la ID proporcionada.
Tras identificar cada dispositivo y descartarlos uno a uno, llego a la conclusión de que el teléfono es el Bus 002 Device 003: ID 048d:1336 Integrated Technology Express, Inc.. Así que el identificador es 048d.
Me aseguro de que mi usuario pertenece al grupo plugdev y creo el archivo /etc/udev/rules.d/51-android.rules como administrador con el contenido:
SUBSYSTEM=="usb”, ATTR{idVendor}=="048d”, MODE="0664”, GROUP="plugdev"
Y acabo con:
~$ sudo chmod a+r /etc/udev/rules.d/51-android.rules
~$ sudo udevadm control –reload-rules
Ahora si que aparece:
~$ adb devices
List of devices attached
0123456789ABCDEF device