Tengo dos teléfonos inteligentes ( ZTEV788d , sistema Android 2.3.6 ) conectados a una computadora ( Unbuntu 11.10 ) al mismo tiempo, usando el comando: adb devices
Obtuve esto:
List of devices attached P753A12D device P753A12D device
¡Los números de serie son iguales!
Escribí una aplicación en el lado de la computadora para comunicarme con estos dos teléfonos, por ejemplo, instalar aplicaciones y archivos push.
Usé estos comandos:
adb -s P753A12D install XXX.apk adb -s P753A12D push XXX /sdcard
Ahora estos dos teléfonos tienen el mismo número de serie ( P753A12D
), cuando ejecuto estos comandos obtengo este error:
error:more than one device
Entonces, mis preguntas son:
Por cierto, la red WiFi / 3G se apagará cuando ejecute la prueba.
Hoy encontré una solución fácil para este problema.
adb devices -l
Obtendrás una lista de dispositivos con sus calificadores
List of devices attached P753A12D device usb:26200000 P753A12D device usb:24400000
Entonces puede usar calificadores en lugar de números de serie como este
adb -s usb:26200000 install xxx.apk
Enfrenté el mismo problema. Esto se debe a que la herramienta adb usa los números de serie para la identificación de los dispositivos conectados al usb en lugar de las rutas de los dispositivos (que son únicos).
Si tiene ganas de ensuciarse las manos, descargue el árbol de fonts de Android, vaya a system/core/adb/transport.c
, cámbielo a algo así:
void register_usb_transport(usb_handle *usb, const char *serial, const char *devpath, unsigned writeable) { atransport *t = calloc(1, sizeof(atransport)); D("transport: %p init'ing for usb_handle %p (sn='%s')\n", t, usb, serial ? serial : ""); init_usb_transport(t, usb, (writeable ? CS_OFFLINE : CS_NOPERM)); // if(serial) { // t->serial = strdup(serial); // } if(devpath) { t->devpath = strdup(devpath); t->serial = strdup(devpath); }
escriba make adb
desde la ruta de nivel superior y listo. Los dispositivos usan rutas USB para identificación. Ahora puede instalar y ejecutar todos los dispositivos de Eclipse con un solo clic.
si su dispositivo está rooteado, intente de esta manera
para cambiar el número de serie de sus dispositivos, primero conecte uno de ellos a su PC y luego escriba esto en cmd
adb devices
esto muestra la identificación de su dispositivo (número de serie).
List of devices attached P753A12D device
elegir un nuevo nombre, por ejemplo NAME1
luego escribe estos comandos
adb shell su device_name="NEW_NAME" cd /sys/class/android_usb/android0/ echo -n $device_name > iSerial cat iSerial
exit
salida de la raíz
exit
salida del shell
COMIENZO
ahora desenchufe el cable usb y ejecute estos comandos
adb kill-server
conecta tu dispositivo de nuevo y escribe
adb devices
ahora puedes ver cambios
List of devices attached New_NAME device
FIN
nota: si no funcionó la primera vez
desconecta tu teléfono y haz estas partes de mi guía de START a END nuevamente.
El objective del número de serie es identificar de manera única el dispositivo, por lo que deben ser diferentes. Dicho esto, algunos fabricantes no se molestan. También es posible que el firmware informe el número incorrectamente.
https://stackoverflow.com/questions/4636794/strange-output-of-adb-devices?rq=1
Puede verificar el número de serie en los dispositivos reales y ver si coincide con lo que adb
informa.
Settings > About Device > Phone Identity > Device Serial Number
No hay un método fácil o consistente para hacer esto que yo sepa. Aquí hay algunos ejemplos donde otros han logrado esta hazaña (pero yo no):
xda-developers.com – Cambiar Wifi, BT, IMEI, Número de serie de cualquier teléfono Android mtk
hugestreet.info – Cómo cambiar IMEI, ID de dispositivo de cualquier dispositivo Android
No debería haber ningún problema al ejecutar comandos si solo hay un dispositivo conectado a la vez.
La respuesta dada por @mirokropacek funciona para Linux (y supuestamente para Mac, también) pero no funciona para Windows, desafortunadamente. Esto se debe a la forma en que se llama a la función register_usb_transport
en Windows. Resulta que el parámetro devpath siempre es NULL
en Windows. Necesitaba manejar la misma situación, así que adapté la solución dada arriba para generar aleatoriamente una ID de dispositivo para cada dispositivo si el parámetro serial
es NULO o está vacío (longitud cero).
No necesito preocuparme por diferenciar dispositivos durante largos períodos de tiempo y muchos dispositivos, por lo que generar un número pseudoaleatorio para la ID del dispositivo con rand
; luego, usar sprintf
para crear una representación en cadena de esa ID parece ser suficiente para mis necesidades pero YMMV. Solo genera un número hexadecimal de 4 dígitos pero funciona lo suficientemente bien para mí (al menos por ahora).
Si no desea cambiar el dispositivo, y / o no tiene acceso de root, y el dispositivo tiene acceso a la red, puede cambiar a usar TCPIP en lugar de USB:
adb tcpip 5555
adb connect yourhostname
Lo he ejecutado a través de túneles SSH donde se conectaría a localhost, por lo que todos los dispositivos aparecen como ‘localhost’, que es bastante inútil. Agregar hosts a / etc / hosts (que apuntaban a localhost) lo solucionó por mí.