我有两个智能手机(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
所以,我的问题是:
- 那是正常的,两款手机有相同的序列号?
- 我可以更改序列号? 如果是,怎么样?
- 有没有什么办法来运行这些安装,推送成功的命令,即使序列号都是一样的吗?
顺便说一句,在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的:
- 亚行切换使用TCPIP:
adb tcpip 5555
- 亚行已经使用网络连接到该设备:
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