viernes, 27 de junio de 2014

Depuración hardware en android (Ubuntu)

Esta entrada es de especial importancia para aquellos que os hayáis agenciado un teléfono/tablet con sistema operativo android, de marca no precisamente conocida.


Aquellos que hayáis probado a desarrollar para android pensaréis, igual que el común de los desarrolladores de ésta plataforma, que utilizar dispositivos virtuales, o emuladores, es lento y farragoso. Para ello, el SDK de android nos permite conectar nuestros dispositivos android al PC y utilizarlos como dispositivo de pruebas. Ésto es mucho más rápido y tiene la ventaja de que ves la aplicación funcionando en un terminal de verdad.

Sin embargo no todos los dispositivos se comportan de la misma manera cuando los conectamos a nuestro PC para probar nuestras apps en ellos. En mi caso, hará cosa de un año me compré una tablet china (PiPo Max M1), y cuando la conecto al PC, el adb ni se inmuta. He de decir que con mi teléfono (Xperia Ray) no tengo ningún problema. Es detectado automáticamente por mi PC y sale en la lista de dispositivos.

Después de dar muchas vueltas y probar muchas soluciones, he dado con un método para hacer funcionar (al menos) los dispositivos mencionados. En el caso de la tablet, podemos decir que cualquier dispositivo con chipset RockChip 3066, ya que todos tiene el mismo "vendor id". Dicho método os lo proporciono en forma de script de bash, como buen programador y amante de linux.

Notas adicionales:
  • Activad el modo debug en vuestro teléfono.
  • Ejecutad el script como super usuario.
  • Debeis proporcionar el "vendor id" de vuestro dispositivo al script como único y necesario parámetro. Si no lo conocéis, podéis buscarlo aquí.
  • Para los dispositivos chinos lo tenéis un poco más complicado pero buscando un poco suele aparecer. Para los que tengáis un dispositivo RockChip 3066, el "vendor id" es 0x2207
  • Conectad vuestro dispositivo en modo de almacenamiento antes de ejecutar el script (no es imprescindible, pero al final de la ejecución se muestra la lista de dispositivos conectados y detectados)
  • Es crucial, que si detenéis y arrancais el servidor de adb, lo hagáis como superusuario. De lo contrario el dispositivo podría no aparecer, o como me pasa a mí, poner 20 signos de interrogación y un "no permissions" al listar los dispositivos.
Es posible que al final de la ejecución la lista de dispositivos siga vacía, o invariable. Esperad unos segundos y ejecutad adb devices. Es posible que el comando se ejecute antes de que se detecte el dispositivo.