giovedì 29 settembre 2011

Vedere i device android collegati al PC in Block Editor di AppInventor, in LINUX

Nella piattaforma di sviluppo AppInventor, una volta che si apre il tool java Block Editor, è possibile, collegato il proprio dispositivo Android al PC via usb, connettere il Block Editor al dispositivo, in modo da poter vedere in anteprima come gira la propria applicazione direttamente sul telefono (o più semplicemente per fare un debug della app che si sta scrivendo direttamente sul proprio dispositivo).

Spesso può capitare di vedere una serie di punti interrogativi (?????????????) quando si apre la finestra a comparsa sopra "Connect to .. " in prossimità di  ciò che dovrebbe la sigla del vostro dispositivo collegato al PC.
In questo caso significa che il vostro sistema linux "vede" il terminale collegato, ma che per una serie di permessi sul device di linux, l'applicativo non riesce a gestirlo correttamente in quanto non è in grado di rilevare i dettagli del dispositivo stesso per il collegamento.

Ecco come fare per rimediare.
Con il sistema udev (quasi tutte le ultime distribuzioni linux dell'ultima generazione):
Creare il file /etc/udev/rules.d/51-android.rules

 # Samsung Galaxy Ace S-5830
 SUBSYSTEMS=="usb", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="689e", MODE="0666"
 # Samsung Galaxy Tab GT-P1000
 SUBSYSTEMS=="usb", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="681c", MODE="0666"

Naturalmente i codici a quattro cifre che si trovano fra le virgolette dopo idVendor e dopo idProduct, devono essere sostituiti i rispettivi codici di Vendor e Product relativi al vostro device.
La maniera più semplice per sapere quali sono i codici di Vendor e Product, è quella di collegare il vostro dispositivo al pc e da un terminale linux digitare il comando lsusb. Avrete un output di questo tipo:


Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 002: ID 03f0:171d Hewlett-Packard Wireless (Bluetooth + WLAN)    ... [snip] .....
Bus 001 Device 004: ID 04e8:689e Samsung Electronics Co., Ltd 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Non rimane che individuare la riga relativa al proprio device (in questo caso l'unico Samsung della lista... ) e determinare cosi i codici dopo "ID" che sono rispettivamente Vendor e Product id (in questo caso idVendor=04e8 e idProduct=689e) e sostituirli nella riga del file 51-android.rules.


Poi fare ripartire con restart udev (o service udev restart)