当连接到两款智能手机,亚行有两个相同的序列号(adb got two same serial num

2019-07-17 11:27发布

我有两个智能手机(ZTEV788d,Android系统2.3.6)连接到计算机(Ubuntu的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. 有没有什么办法来运行这些安装,推送成功的命令,即使序列号都是一样的吗?

顺便说一句,在WiFi / 3G网络将被关闭,当我运行测试。

Answer 1:

今天,我发现这个问题的简单的解决方案。

adb devices -l

你会得到与他们的预选赛设备列表

List of devices attached
P753A12D device usb:26200000 transport_id:1
P753A12D device usb:24400000 transport_id:2

然后你可以使用限定词,而不是像这样的序列号

adb -s usb:26200000 install xxx.apk

transport_id-t

adb -t 1 install xxx.apk


Answer 2:

我面临同样的问题。 这是因为亚行工具使用的序列号为连接到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中的设备。



Answer 3:

如果您的设备是植根尝试这种方式
更改序列号的设备,首先连接其中一个到您的PC,然后在cmd中输入此

adb devices

这说明您的设备ID(序列号)。

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

结束

注意:如果它不工作第一次
断开你的手机,做从开始我指南的这一部分再次结束



Answer 4:

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设备的设备ID


3.有没有什么办法来运行这些安装,推送成功的命令,即使序列号是一样的吗?

不应该有运行命令如果只有一个装置在一个时间有关的任何问题。



Answer 5:

通过@mirokropacek给出的答案适用于Linux(和大概的Mac,太),但Windows不能正常工作,很遗憾。 这是由于的方式register_usb_transport功能被称为Windows中。 原来,DEVPATH参数始终是NULL在Windows中。 我需要处理同样的情况,所以我适于上面给出随机生成用于每个装置的装置ID,如果该溶液serial参数为NULL或为空(零长度)。

我不需要担心在很长一段时间,许多设备,这样生成与设备ID的伪随机数区分设备rand ,然后用sprintf创建ID的字符串表示似乎是足够我的需要但情况因人而异。 它只是产生一个4位十六进制数字,但它(至少现在是)的作品不够好,我。



Answer 6:

如果你不想改变设备本身,和/或不具有root权限,并且该设备具有网络接入,你可以切换到使用TCPIP,而不是USB的:

  1. 亚行切换使用TCPIP: adb tcpip 5555
  2. 亚行已经使用网络连接到该设备: adb connect yourhostname

我已经通过SSH隧道运行这个哪里会连接到本地主机,所以所有设备显示为“本地主机”,这是相当无用。 将主机添加到/ etc / hosts文件(即所有指定到localhost)固定为我。



Answer 7:

现在,新的adb支持除了序列号运输ID:

-s SERIAL  use device with given serial (overrides $ANDROID_SERIAL)
-t ID      use device with given transport id

首先运行

adb devices -l

你会看到如下:

List of devicos attached
0123456789ABCDEF device usb:123456789X product:Foo V1 model:Foo_ AB device:Bar AB transport_id:2 
0123456789ABCDEF device usb:987654321X product:Foo V1 model:Foo_ AB device:Bar AB transport_id:1

现在,您可以指定与设备

adb -t 1 install XXX.apk


文章来源: adb got two same serial numbers when connected to two smart phones
标签: android adb