adb получил два одинаковых серийных номера, как решить без root [duplicate]

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

* NB: работает с Python 3.x

import re  # Regular expression library


def string_cleanup(x, notwanted):
    for item in notwanted:
        x = re.sub(item, '', x)
    return x

line = "<title>My example: <strong>A text %very% $clean!!</strong></title>"
print("Uncleaned: ", line)

# Get rid of html elements
html_elements = ["<title>", "</title>", "<strong>", "</strong>"]
line = string_cleanup(line, html_elements)
print("1st clean: ", line)

# Get rid of special characters
special_chars = ["[!@#$]", "%"]
line = string_cleanup(line, special_chars)
print("2nd clean: ", line)

В функции string_cleanup требуется ваше string x и ваш список не указан в качестве аргументов.

Выход:

Uncleaned:  <title>My example: <strong>A text %very% $clean!!</strong></title>
1st clean:  My example: A text %very% $clean!!
2nd clean:  My example: A text very clean
для каждого элемента в этом списке элементов или шаблона, если требуется замена.
14
задан Arpit 21 December 2012 в 09:59
поделиться

6 ответов

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

adb devices -l

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

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

Затем вы можете использовать квалификаторы вместо такие серийные номера

adb -s usb:26200000 install xxx.apk
12
ответ дан Aleksey Potapkin 1 September 2018 в 09:21
поделиться

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

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

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. Есть ли способ запустить эту установку, нажимать команды успешно, даже если серийные номера одинаковы?

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

4
ответ дан Community 1 September 2018 в 09:21
поделиться

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

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

1
ответ дан melston 1 September 2018 в 09:21
поделиться

, если ваше устройство коренится попробуйте этот способ изменить серийный номер ваших устройств, сначала подключите один из них к вашему компьютеру, затем введите это в 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 выход из оболочки

START теперь отключить кабель USB и запустить эти команды

adb kill-server

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

adb devices

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

List of devices attached
New_NAME    device

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

4
ответ дан Rahmat Waisi 1 September 2018 в 09:21
поделиться

Я столкнулся с той же проблемой. Это связано с тем, что инструмент 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 для идентификации. Теперь вы можете установить & amp; выполнить все устройства из Eclipse одним щелчком мыши.

5
ответ дан Seraphim's 1 September 2018 в 09:21
поделиться

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

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

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

0
ответ дан Tomas Smits 1 September 2018 в 09:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: