当连接到两部智能手机时,adb有两个相同的序列号

Ale*_*len 15 android adb

我有两个智能手机(ZTEV788d,系统Android 2.3.6)同时连接到计算机(Ubuntu 11.10),使用命令:adb devices我得到了这个:

List of devices attached
P753A12D    device
P753A12D    device
Run Code Online (Sandbox Code Playgroud)

序列号是一样的!

我在计算机端编写了一个应用程序来与这两款手机进行通信,例如安装应用程序和推送文件.

我使用了这些命令:

adb -s P753A12D install XXX.apk
adb -s P753A12D push XXX /sdcard
Run Code Online (Sandbox Code Playgroud)

现在这两个手机有相同的序列号(P753A12D),当我运行这些命令时,我收到此错误:

error:more than one device
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是:

  1. 那两部手机拥有相同的序列号是否正常?
  2. 我可以更改序列号吗?如果有,怎么样?
  3. 有没有办法运行这些安装,即使序列号是相同的,也能成功推送命令?

顺便说一下,当我运行测试时,WiFi/3G网络将被关闭.

Ale*_*kin 15

今天我找到了解决这个问题的简单方法.

adb devices -l
Run Code Online (Sandbox Code Playgroud)

您将获得具有限定符的设备列表

List of devices attached
P753A12D device usb:26200000 transport_id:1
P753A12D device usb:24400000 transport_id:2
Run Code Online (Sandbox Code Playgroud)

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

adb -s usb:26200000 install xxx.apk
Run Code Online (Sandbox Code Playgroud)

或者transport_id-t

adb -t 1 install xxx.apk
Run Code Online (Sandbox Code Playgroud)


Rah*_*isi 6

如果您的设备已植根,请 尝试用这种方法
更改设备的序列号,首先将其中一个连接到PC,然后在cmd中键入

adb devices
Run Code Online (Sandbox Code Playgroud)

这会显示您的设备ID(序列号)。

List of devices attached
P753A12D    device
Run Code Online (Sandbox Code Playgroud)

选择一些新名称,例如NAME1,
然后键入以下命令

adb shell
su 
device_name="NEW_NAME"
cd /sys/class/android_usb/android0/
echo -n $device_name > iSerial
cat iSerial
Run Code Online (Sandbox Code Playgroud)

exit从root
exit退出从shell退出


START
现在拔掉USB电缆并运行此命令

adb kill-server
Run Code Online (Sandbox Code Playgroud)

再次连接您的设备并输入

adb devices
Run Code Online (Sandbox Code Playgroud)

现在您可以看到更改

List of devices attached
New_NAME    device
Run Code Online (Sandbox Code Playgroud)

END

注意:如果第一次无法使用
,请断开手机,然后重新执行指南中从STARTEND的这一部分。


Cod*_*ane 5

1. 两部手机序列号相同正常吗?

序列号的目的是唯一标识设备,因此它们应该不同。话虽这么说,但有些制造商并不介意。固件也可能错误地报告了数字。

/sf/ask/324575611/?rq=1

您可以检查实际设备上的序列号,看看是否与adb报告的内容相符。

Settings > About Device > Phone Identity > Device Serial Number
Run Code Online (Sandbox Code Playgroud)

2.我可以更改序列号吗?如果是,怎么办?

据我所知,没有一种简单或一致的方法可以做到这一点。以下是其他人已经完成这项壮举的一些例子(但我还没有):

xda-developers.com - 更改任何 mtk android 手机的 Wifi、BT、IMEI、序列号

Hugestreet.info - 如何更改任何 Android 设备的 IMEI、设备 ID


3. 即使序列号相同,有什么方法可以成功运行这些 install、push 命令吗?

如果一次仅连接一台设备,则运行命令应该不会有任何问题。


Mir*_*cek 5

我遇到了同样的问题.这是因为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);
    }
Run Code Online (Sandbox Code Playgroud)

键入make adb从顶层路径和瞧.设备使用usb路径进行识别.现在,您只需单击一下即可从Eclipse安装和执行所有设备.