Aporte de Matias Hernández (@matiash)
GeneXus es capaz de instalar y ejecutar una aplicación en un dispositvo Android conectado a la máquina de desarrollo mediante USB. Para eso sólo es necesario:
- En el dispositivo, tener habilitada la opción de “USB Debugging”.
- En la PC, tener instalados los drivers USB del dispositivo.
- Que la URL de servicios del generador SD sea accesible desde el dispositivo.
La opción de USB Debugging se puede encontrar bajo Settings -> Applications en Android 2.x y bajo Settings -> Developer Options en Android 4.x. A partir de Android Jelly Bean 4.2 esta opción está oculta por defecto, y la forma de habilitarla es haciendo tap 7 veces en Settings -> About -> Build number.
Los drivers USB pueden descargarse desde la página del fabricante (en forma separada o junto con alguna herramienta). En los devices Nexus de Google se pueden instalar como una opción del SDK. En los Samsung se pueden instalar junto con el Kies, u obtenerlos separadamente (por ejemplo desde http://forum.xda-developers.com/showthread.php?t=2038555).
A diferencia del emulador, un dispositivo Android conectado a un PC mediante USB no puede “ver” al mismo por esa conexión. Por lo tanto, no es posible ejecutar en el dispositivo si la propiedad “Services URL” del generador SD apunta a localhost. Como alternativa, es posible modificar esta propiedad colocando la dirección IP de la máquina local (en caso que ésta sea accesible a través de la red WiFi o de datos que el dispositivo use) o utilizar deploy to cloud en su lugar.
¿Qué pasa si todas estas reglas se cumplen y el Run de GeneXus sigue utilizando el emulador en vez del dispositivo conectado?
Lo más probable es que el SDK de Android no esté detectando el dispositivo. La forma de verificarlo es ejecutando el comando “adb devices” en el directorio <SDK>\platform-tools. El resultado (para un dispositivo funcionando) debería ser de la forma:
List of devices attached
05e9b1eb device
Si el dispositivo no aparece (o se ve como “offline”) entonces no está accesible para su uso desde GeneXus. Algunas posibles causas (en orden de probabilidad decreciente):
- Los drivers USB no están correctamente instalados. Esto se puede revisar accediendo al device manager; el dispositivo debería aparecer como “Android Composite ADB Interface” (y posiblemente también bajo “Portable Devices”). En este caso debería usarse la opción de “Update Driver Software” para seleccionar e instalar los drivers correctos.
- Si el dispositivo posee Android 4.2.2 (o superior) entonces se requiere adb 1.0.31 o superior para usarlo (porque esta versión agrega una confirmación antes de ser usada mediante USB por primera vez). Se puede ver la versión instalada con el comando “adb version”. La nueva versión está disponible a partir de las Platform Tools r16.0.1. Ver https://developer.android.com/tools/help/adb.html
- En algunos dispositivos es necesario cambiar el método de conexión USB de “Media Device” (MTP) a “Camera” (PTP). Esto se puede configurar haciendo tap en la notificación que aparece en el dispositivo al conectarlo (Touch for other USB options).
Mi Note II ya no funcionaba para desarrollo, hice todo (o eso pensaba) opciones de desarrollador, depuracion usb, fuentes desconocidas, metodo PTP, ya me habia dado por vencido pero este post me ayudo a encontrar el problema!
ResponderEliminarInstale el samsung kies y se instalaron con eso aparentemente algunos controladores que faltaban.
Ahora ya puedo trabajar directo a mi Galaxy Note con cable.
Saludos!
Me salvaste, lo sulucioné cambiando el método de Conexión MTP a PTP, muchas gracias
ResponderEliminar