Uno de los problemas que tiene el desarrollo de una aplicación móvil es que depende del sistema operativo que se utilice hay que establecer una configuración distinta. Evidentemente no pueden hacer un sistema perfecto que funcione en todos los ordenadores, y si ya existe una competencia entre las compañias para usar su producto la cosa se complica, ya que no van a crear un modelo genérico que satisfaga las necesidades por igual.

El problema que abordo en este post es que a la hora de instalar una aplicación en Android tienes que disponer tanto de la aplicación como del móvil para desarrollarla. Pues tenemos el mismo problema; no son pocos los modelos de móvil que se han de sincronizar con tu ordenador.

Siguiendo los pasos típicos que son:

  1. Configurar tu móvil en modo depuración y conectarlo por USB con tu ordenador.
  2. Abrir el Android SDK Manager para que el ordenador detecte que dispositivos hay disponibles.
  3. Que Java encuentre el dispositivo y al ejecutar se instale e inicie la aplicación en el móvil. Osea, apretar el botón “Run“.

Este proceso si lo hacemos en Windows no tendremos (en principio) ningún problema para acceder a los distintos modelos de smartphone. Cuando se instalan los paquetes del SDK de Android hay uno que es muy importante llamado “Google USB Driver“. Pues en Linux no se puede instalar y aparece un mensaje “Not compatible with Linux” en lugar de “Installed” y hay que hacer una voltereta con tirabuzón, que es la creación de un fichero en el que introduciremos una linea con los permisos y la información del modelo de nuestro smartphone.

Esto se explica en la siguiente página:

    • 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. To set up device detection on Ubuntu Linux:
      1. Log in as root and create this file: /etc/udev/rules.d/51-android.rules.Use this format to add each vendor to the file:
        SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"In this example, the vendor ID is for HTC. The MODE assignment specifies read/write permissions, and GROUPdefines which Unix group owns the device node.

        Note: The rule syntax may vary slightly depending on your environment. Consult the udev documentation for your system as needed. For an overview of rule syntax, see this guide to writing udev rules.

      2. Now execute:
        chmod a+r /etc/udev/rules.d/51-android.rules

Hay que dirigirse al directorio que se explica arriba y crear un fichero de texto con el nombre “51-android.rules” . Añadir la linea que comienza con SUBSYSTEM… y solo hay que modificar el número de 4 dígitos “idVendor”, que es el identificador del fabricante. La lista de modelos se puede consultar en el siguiente link.

El Mode son los permisos de lectura, escritura y ejecución. El GROUP se puede omitir pero hace referencia al dueño del sistema que en muchos casos es root.

Si tenemos que usar otros móviles tendremos que añadir más lineas de la misma manera en ese archivo y se habilitará la conexión para desarrollar con el móvil.

No será el único problema que nos encontremos… así que suerte!!!

Ejercicio de meditación: ¿Qué pasa si sacan un nuevo modelo que no está en la lista, como por ejemplo el modelo QiLive de la marca Auchan? ¿Y si tampoco funciona con Windows?

Respuesta (Selecciona el contenido para ver la respuesta): La marca de teléfonos QiLive de Auchan es realmente un móvil creado por Archos, una empresa francesa de electrónica. Esta es la empresa de la que realmente hay que buscar el “idVendor”, pero tampoco se encuentra en la lista proporcionada por Google. En el soporte técnico nos proporcionan la siguiente información.   id = 0x0e79 o idVendor = e79.

Por lo que la linea que debemos añadir a nuestro dispositivo es la siguiente:

SUBSYSTEM==”usb”,ATTR{idVendor}==”0e79″, MODE=”0666″,GROUP=”plugdev”