Android Studio: Provare le app su device fisico con Linux
Una delle problematiche che possiamo incontrare nella programmazione Android su piattaforma Linux è il riconoscimento del nostro device fisico.
E’ buona norma testare le proprie App con l’apposito emulatore, però a volte può essere utile ricorrere al device fisico (in primis per la lentezza dell’emulatore ma anche per testare con calma tutte le funzioni).
Linux è in grado di riconoscere il nostro device però ha bisogno di una spintarella, ci basta creare un file simile al seguente nella cartella /etc/udev/rules.d (come utente root)
#Google SUBSYSTEM=="usb", SYSFS{idVendor}=="18d1", MODE="0666" #Acer SUBSYSTEM=="usb", SYSFS{idVendor}=="0502", MODE="0666" #Dell SUBSYSTEM=="usb", SYSFS{idVendor}=="413c", MODE="0666" #Foxconn SUBSYSTEM=="usb", SYSFS{idVendor}=="0489", MODE="0666" #Garmin-Asus SUBSYSTEM=="usb", SYSFS{idVendor}=="091E", MODE="0666" #HTC SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666" #Huawei SUBSYSTEM=="usb", SYSFS{idVendor}=="12d1", MODE="0666" #Kyocera SUBSYSTEM=="usb", SYSFS{idVendor}=="0482", MODE="0666" #LG SUBSYSTEM=="usb", SYSFS{idVendor}=="1004", MODE="0666" #Motorola SUBSYSTEM=="usb", SYSFS{idVendor}=="22b8", MODE="0666" #Nvidia SUBSYSTEM=="usb", SYSFS{idVendor}=="0955", MODE="0666" #Pantech SUBSYSTEM=="usb", SYSFS{idVendor}=="10a9", MODE="0666" #Samsung SUBSYSTEM=="usb", SYSFS{idVendor}=="04e8", MODE="0666" #Sharp SUBSYSTEM=="usb", SYSFS{idVendor}=="04dd", MODE="0666" #Sony Ericsson SUBSYSTEM=="usb", SYSFS{idVendor}=="0fce", MODE="0666" #ZTE SUBSYSTEM=="usb", SYSFS{idVendor}=="19d2", MODE="0666"
Chiamiamo il file android-99.rules e gli assegniamo i permessi di esecuzione.
Servono spiegazioni: abbiamo creato un file utile a udev per riconoscere una serie di device (il nome del file contiene il numero 99 per essere eseguito per ultimo). Se il nostro non è fra quelli proposti (o volete fare un po’ di pulizia) il vendorId è reperibile tramite il comando lsusb (ovviamente dopo averlo collegato), per il mio mitico LG Leon abbiamo 1004 (id del produttore quindi valido per ogni LG) e 6300 (id modello).
lsusb Bus 003 Device 004: ID 1004:6300 LG Electronics, Inc. G2/Optimus Android Phone
Dobbiamo adesso riavviare udev (o il sistema se vogliamo essere cattivi)
sudo service udev restart
Adesso posizioniamoci nella cartella dove abbiamo installato l’SDK e lanciamo:
./adb devices List of devices attached DMHIAAN7RSPVLNY9 device
Il nostro device è riconosciuto. Se l’output presenta dei punti interrogativi non è stato riconosciuto, se trovate scritto unautorized controllate il device dovrebbe mostrare un dialog per l’autorizzazione.
Grazie ad un accordo di collaborazione l’articolo è stato pubblicato anche sul blog Be Geek my friend