Многие китайские производители Android-девайсов не заморачиваются на присваивание своим поделкам уникальных серийных номеров. По крайней мере в софте. И можно столкнутся с проблемой когда одновременно подключено более 1 устройства с одинаковым серийником. В таком случае adb будет ругаться и чтобы залить и отлаживать своё приложение нужно отключать одно из устройств:
Серийник '0123456789ABCDEF' захардкоден в исходниках ядра drivers/usb/gadget/android.c:
Всё что нужно - это записывать туда новый серийник при загрузке ОС. Простой способ сделать это с помощью программы Script Manager. Для начала создадим скрипт на ФС, позволяющей сделать его исполняемым. Например /system/changecerial.sh (понадобятся права root и /system перемонтировать на чтение/запись, например, с помощью ES File Explorer):
su вобщем не обязательно т.к. при использвании Script Manager можно указать чтобы этот скрипт вызывался с правами root, но пусть будет и тут. Не забываем сделать его исполняемым. Теперь в программе Script Manager находим этот файл, кликаем на него, отмечаем "Is executable", "Su" и "Boot", затем Save и Run. Скрипт выполнится в терминале. Если никаких ошибок не вывалилось, то теперь у устройства новый серийник и он будет задаваться при каждой последующей загрузке.
[2013-10-16 00:03:10 - MyAwesomeApp] Failed to install MyAwesomeApp.apk on device '0123456789ABCDEF': adb rejected install command with: more than one deviceЭто никуда не годится. Имея root-привелегии можно решить эту проблему.
[2013-10-16 00:03:10 - MyAwesomeApp] com.android.ddmlib.AdbCommandRejectedException: more than one device
[2013-10-16 00:03:10 - MyAwesomeApp] Launch canceled!
Серийник '0123456789ABCDEF' захардкоден в исходниках ядра drivers/usb/gadget/android.c:
static struct usb_string strings_dev[] = {Но к счастью adb берёт его из sysfs, а именно из /sys/class/android_usb/android0/iSerial так что можно обойтись без пересборки ядра.
/* These dummy values should be overridden by platform data */
[STRING_MANUFACTURER_IDX].s = "Android",
[STRING_PRODUCT_IDX].s = "Android",
[STRING_SERIAL_IDX].s = "0123456789ABCDEF",
{ } /* end of list */
};
Всё что нужно - это записывать туда новый серийник при загрузке ОС. Простой способ сделать это с помощью программы Script Manager. Для начала создадим скрипт на ФС, позволяющей сделать его исполняемым. Например /system/changecerial.sh (понадобятся права root и /system перемонтировать на чтение/запись, например, с помощью ES File Explorer):
#!/system/bin/sh
su && echo "DEAD000000000000" > /sys/class/android_usb/android0/iSerial
su вобщем не обязательно т.к. при использвании Script Manager можно указать чтобы этот скрипт вызывался с правами root, но пусть будет и тут. Не забываем сделать его исполняемым. Теперь в программе Script Manager находим этот файл, кликаем на него, отмечаем "Is executable", "Su" и "Boot", затем Save и Run. Скрипт выполнится в терминале. Если никаких ошибок не вывалилось, то теперь у устройства новый серийник и он будет задаваться при каждой последующей загрузке.
Привет. Изменить серийник в файле получилось.Но в настройках планшета остался прежний ?
ОтветитьУдалитьХм.. я правда не смотрел что там в настройках т.к. цель была научить adb их различать по серийнику. Гляну вечерком на том девайсе где с этим игрался
УдалитьЗдаров а ты не мог бы поподробнее расписать? какие программы нужны? что такое ФС?
ОтветитьУдалитьи можно ли сменить его на телефоне HTC?
УдалитьНужен root доступ. На любом девайсе должно работать, но не могу гарантировать что во всех версиях андроида. Script Manager программы достаточно чтобы скрипт в автозапуск поставить
УдалитьОтпишись в вк https://vk.com/id168785013
ОтветитьУдалитьЗдравствуйте Смените мой серийный номер G6 Plus
ОтветитьУдалитьСуть такая - есть бинарный файл (в данном случае прошивка ноутбука), с которым нужно произвести несколько действий:
ОтветитьУдалить- по определенным смещениям править информацию (текстовые ресурсы);
- Пересчитать контрольную сумму (crc32c) определенного блока этого бинарного файла (в котором мы производили правку) и записать эту новую контрольную сумму по строго определенному адресу.
помогите пожалуйса
Ооакп
ОтветитьУдалить