martes, 19 de febrero de 2013

Eclipse + Android: Depurar mi aplicación en mi móvil en Linux

Ya hemos visto que el SDK de Android incluye un simulador, o más profesionalmente, lo que él llama dispositivo virtuale (AVD), que no es más que la representación de un móvil en pantalla.

La cosa es que ya mi aplicación va cogiendo cierta... envergadura, y me apetece verla funcionar en un móvil real, en el mío en este caso, un Sony Ericsson XPeria Mini:





Hay una forma muy sencilla, que es coger el fichero .apk que se crea bajo la carpeta bin de tu proyecto, y copiarlo en tu móvil Android.

Esto es un poco co$%!##zo porque, cada vez que haces un cambio tienes que repetir todo este proceso.

A mí me gusta más ir desarrollando e ir ejecutando para ver el resultado, y los tutoriales que encuentro por ahí son casi todos referidos a Windows, y yo ya hace algún tiempo que me he pasado a Linux.


Veamos cómo hacerlo.




1. En tu móvil, activar Orígenes Desconocidos

Debes abrir la pantalla de Ajustes de tu móvil, bajo la sección Aplicaciones, marcamos la casilla "Orígenes desconocidos":



2. En tu móvil, Depuración USB

De nuevo en tu móvil, debes activar la depuración USB:




3. En Eclipse indicamos que nos pregunte dónde ejecutar

Lo primero que tenemos que hacer es modificar la configuración de Eclipse para que, cada vez que vayamos a ejecutar nuestra aplicación Android, nos pregunte si queremos ejecutarla en el simulador o en un dispositivo real, y no que lance sistemáticamente el simulador.

Conectamos el móvil al ordenador con su cable USB, y en eclipse pulsamos botón derecho sobre nuestro proyecto/ Run as.../ Run configurations...:



Y nos sale una pantalla como ésta:


Marcamos la opción para que nos pregunte en qué dispositivo queremos ejecutar cada vez que lancemos la aplicación.


4. Ejecutamos nuestra aplicación


Como vemos, ahora cuando ejecutamos la aplicación nos pregunta dónde queremos ejecutarla. 
La primera entrada es mi AVD, es decir, el simulador.
La segunda es mi móvil (fíjate que cambia el icono), pero no es capaz de reconocerlo:



5. lsusb: Identificadores del móvil


Abrimos una consola, con nuestro móvil conectado a un puerto USB y ejecutamos el comando lsusb:


El comando lsusb es un ls de los puertos usb, es decir, muestra lo que hay conectado a los puertos usb, en este caso mi móvil. 

Nos interesan esos dos numeritos: el primero, el identificador del fabricante, y el segunto, el identificador del modelo. Te van a hacer falta más adelante.

Desde la consola, si ejecutamos la utilidad de android adb veremos que tampoco detecta mi móvil. 
Esta utilidad está donde hayas instalado el SDK de android, bajo la carpeta platform-tools: ./adb devices


IMPORTANTE: Para ejecutar adb asegúrate que estás en la carpeta platform-tools de tu instalación del SDK de Android


6. rules.d: cargamos identificación del móvil

De nuevo desde consola, creamos el fichero 99-android.rules bajo /etc/udev/rules.d: 

sudo vi /etc/udev/rules.d/99-android.rules

Si no te manejas con el editor vi usa el que quieras, pero crea este fichero exactamente con este contenido:
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="6166", SYMLINK+="android_adb", MODE="0666", OWNER="root"


IMPORTANTE: Cuidado con copiar-pegar esta línea. A veces cambia las comillas dobles por comilla francesa, y por eso no funciona.

Cambiamos los permisos de este fichero:
sudo chmod a+r 99-android.rules


7. Desconectamos y volvemos a conectar el móvil

Ya está listo. 
Vamos a comprobar que es así, y que ya el sistema detecta perfectamente tu móvil. ./adb devices


8. Ejecutamos en Eclipse y elegimos el móvil

Bueno, pues ya está.
Vamos a Eclipse, ejecutamos la aplicación, nos pregunta si queremos ejecutar en el simulador o... en el móvil que ahora sí ha detectado perfectamente: