adb tiene dos mismos números de serie cuando está conectado a dos teléfonos inteligentes

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:

  1. ¿Es normal que dos teléfonos tengan el mismo número de serie?
  2. ¿Puedo cambiar el número de serie? si es así, ¿cómo?
  3. ¿Hay alguna forma de ejecutar estas instalación, presionar comandos exitosamente incluso si el número de serie es el mismo?

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.

1. ¿Es normal que dos teléfonos tengan el mismo número de serie?

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 

2. ¿Puedo cambiar el número de serie? si es así, ¿cómo?

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


3. ¿Hay alguna forma de ejecutar esta instalación, presionar comandos exitosamente incluso si los números de serie son los mismos?

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:

  1. Cambiar adb al uso de TCPIP: adb tcpip 5555
  2. Haga que adb se conecte al dispositivo usando la red: 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í.