adb получил два одинаковых серийных номера при подключении к двум смартфонам

У меня есть два смартфона ( ZTEV788d , система Android 2.3.6 ), подключенные к компьютеру ( Unbuntu 11.10 ) одновременно, используя команду: adb devices Я получил это:

 List of devices attached P753A12D device P753A12D device 

Серийные номера одинаковы!

Я написал приложение на компьютере, чтобы связаться с этими двумя телефонами, например, установить приложение и нажать файлы.

Я использовал эти команды:

 adb -s P753A12D install XXX.apk adb -s P753A12D push XXX /sdcard 

Теперь эти два телефона имеют один и тот же серийный номер ( P753A12D ), когда я запускаю эти команды, я получаю эту ошибку:

 error:more than one device 

Итак, мои вопросы:

  1. Это нормально, что два телефона имеют один и тот же серийный номер?
  2. Могу ли я изменить серийный номер? если да, то как?
  3. Есть ли способ запустить эту установку, успешно нажимать команды, даже если серийный номер не совпадает?

BTW, сеть WiFi / 3G будет отключена, когда я запустил тест.

Сегодня я нашел легкое решение этой проблемы.

 adb devices -l 

Вы получите список устройств с их квалификаторами

 List of devices attached P753A12D device usb:26200000 P753A12D device usb:24400000 

Затем вы можете использовать квалификаторы вместо серийных номеров, подобных этому

 adb -s usb:26200000 install xxx.apk 

Я столкнулся с той же проблемой. Это связано с тем, что инструмент adb использует серийные номера для идентификации устройств, подключенных к usb, а не их пути к устройствам (которые являются уникальными).

Если вы чувствуете, что руки грязные, загрузите исходное дерево Android, перейдите в system/core/adb/transport.c , измените его на что-то вроде этого:

 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); } 

тип make adb с пути верхнего уровня и вуаля. Устройства используют пути usb для идентификации. Теперь вы можете установить и выполнить все устройства из Eclipse одним щелчком мыши.

если ваше устройство коренится, попробуйте этот путь
чтобы изменить серийный номер ваших устройств, сначала подключите один из них к компьютеру, затем введите его в cmd

 adb devices 

это показывает идентификатор вашего устройства (серийный номер).

 List of devices attached P753A12D device 

выберите новое имя, например NAME1
затем введите эти команды

 adb shell su device_name="NEW_NAME" cd /sys/class/android_usb/android0/ echo -n $device_name > iSerial cat iSerial 

exit из корня
exit из оболочки

НАЧАЛО
теперь отключите кабель USB и запустите эти команды.

 adb kill-server 

снова подключите устройство и введите

 adb devices 

теперь вы можете видеть изменения

 List of devices attached New_NAME device 

КОНЕЦ

примечание: если он не работал в первый раз
отсоедините телефон и повторите эту часть моего руководства, начиная с START и заканчивая END .

1. Нормально ли, что два телефона имеют один и тот же серийный номер?

objectiveю серийного номера является уникальная идентификация устройства, поэтому они должны быть разными. При этом некоторые производители не беспокоятся. Также возможно, что прошивка неправильно сообщает номер.

https://stackoverflow.com/questions/4636794/strange-output-of-adb-devices?rq=1

Вы можете проверить серийный номер на реальных устройствах и посмотреть, соответствует ли он тому, что сообщает adb .

 Settings > About Device > Phone Identity > Device Serial Number 

2. Могу ли я изменить серийный номер? если да, то как?

Существует не простой или последовательный метод для этого, о котором я знаю. Вот несколько примеров, когда другие совершили этот подвиг (но я этого не сделал):

xda-developers.com – измените Wifi, BT, IMEI, серийный номер любого телефона mtk android

hugestreet.info – Как изменить IMEI, Идентификатор устройства любого устройства Android


3. Есть ли способ запустить эту установку, нажимать команды успешно, даже если серийные номера одинаковы?

Не должно быть никаких проблем с запущенными командами, если одновременно подключено только одно устройство.

Ответ, данный @mirokropacek, работает для Linux (и предположительно Mac тоже), но, к сожалению, не работает для Windows. Это связано с тем, как в Windows вызывается функция register_usb_transport . Оказывается, параметр devpath всегда равен NULL в Windows. Мне нужно было обрабатывать ту же ситуацию, поэтому я адаптировал приведенное выше решение для случайного создания идентификатора устройства для каждого устройства, если serial параметр NULL или пустой (нулевая длина).

Мне не нужно беспокоиться о том, чтобы дифференцировать устройства в течение длительных периодов времени и на многих устройствах, создавая псевдослучайное число для идентификатора устройства с помощью rand , тогда использование sprintf для создания строкового представления этого идентификатора кажется мне достаточным для моих нужд но YMMV. Он генерирует только 4-значный шестнадцатеричный номер, но он работает достаточно хорошо для меня (на данный момент, по крайней мере).

Если вы не хотите изменять само устройство и / или не имеете корневого доступа, а устройство имеет доступ к сети, вы можете переключиться на использование TCPIP вместо USB:

  1. Переключить adb на использование TCPIP: adb tcpip 5555
  2. Попросите adb подключиться к устройству с помощью сети: adb connect yourhostname

Я запускаю это через туннели SSH, где он будет подключаться к локальному хосту, поэтому все устройства отображаются как «localhost», что совершенно не полезно. Добавление хостов в / etc / hosts (все, что указывалось на localhost) исправлено для меня.

  • Как можно вытащить (частные) данные своего собственного приложения для Android?
  • Отключить главную кнопку в Android ICS (4.0)
  • Как я могу проверить, доступна ли Sim-карта в устройстве Android?
  • Android: Как включить / отключить пункт меню выбора при нажатии кнопки?
  • Ошибка открытия SupportMapFragment во второй раз
  • Android Design Library - Плавающая кнопка с кнопками ввода / маржи
  • Android, как отображать 2 списка в одном действии один за другим
  • Как resize шрифта tabhost в android
  • Понимание списка для Android
  • Заполнение между иконкой и заголовком ActionBar
  • android.app.Application не может быть создан из-за NullPointerException
  • Давайте будем гением компьютера.