连接到 ADB 服务器的最大设备数

Posted

技术标签:

【中文标题】连接到 ADB 服务器的最大设备数【英文标题】:Maximum number of devices connected to an ADB server 【发布时间】:2012-04-13 00:50:05 【问题描述】:

根据android Debug Bridge:

然后服务器建立与所有正在运行的模拟器/设备的连接 实例。它通过扫描定位模拟器/设备实例 5555 到 5585 范围内的奇数端口,该范围由 模拟器/设备。服务器找到一个 adb 守护进程的地方,它会设置一个 连接到该端口。请注意,每个模拟器/设备实例 获得一对顺序端口——一个偶数端口 控制台连接和用于 adb 连接的奇数端口。为了 示例:

模拟器 1,控制台:5554

模拟器 1,adb:5555

模拟器 2,控制台:5556

模拟器 2,adb: 5557 ...

ADB 服务器仅通过扫描 5555 到 5585 范围内的奇数端口(总共 30 个端口)来检查设备,并为每个设备分配 2 个端口。 ADB 是否能够接受超过 15 个 Android 设备(15x2 端口),或者我可以在同一台计算机上连接更多设备吗?我认为不可能在同一台机器上运行多个 ADB 服务器。

【问题讨论】:

如果 adb 服务在 5037 端口运行,那么为什么它会定位 5555 到 5585 范围内的设备? 因为它需要每个设备的持久连接,因此每个设备都有一个端口 您能否给我一些 adb 客户端的示例以及 adb 客户端的真正含义。我曾经认为我连接到我的机器的设备,即电话/模拟器是客户端,但它们是 adb 设备。 【参考方案1】:

您可以使用环境变量ANDROID_ADB_SERVER_PORT 在同一台计算机上运行多个 adb 实例。在this answer 上查看更多详细信息。

通过模拟器上的-ports选项,你可以指定任意端口,然后:

$ adb connect localhost:PORT

如果您的手机已root,您可以在另一个端口上重新启动adbd(参见another answer),然后:

$ adb connect IP_OF_DEVICE:PORT

该设备随后可通过 wifi 访问,无需插入。 请注意,您 wifi 网络上的任何人都可以通过这种方式访问​​您的手机!

【讨论】:

是否可以通过wifi访问未root的设备? 不行,设备必须root,你必须在设备的root提示下更改设置,或者adb shell必须给你一个root提示(我的手机通常不会,虽然它有su 已安装)。当adb shell没有给出root提示时,我不知道如何回到USB,没有重新启动。 是的,您可以使用非 root 设备通过 wifi 进行 ADB。见***.com/questions/2604727/…【参考方案2】:

adb 使用的最大端口数可以通过设置ADB_LOCAL_TRANSPORT_MAX_PORT 环境变量来更改。您可以在 adb 代码上简单地 take a look(它是开源的,因为它是 Android 的一部分)。可以看到最大 adb 端口数是这样设置的:

static int adb_local_transport_max_port = DEFAULT_ADB_LOCAL_TRANSPORT_PORT + 16 * 2 - 1;

其中DEFAULT_ADB_LOCAL_TRANSPORT_PORT 是 5555。每个设备需要 2 个端口(控制台连接 + adb 连接)。所以使用这个公式来计算你的最大端口:max_port = 5555 + 2 * N + 1

阅读here 如何在 Windows 上设置环境变量。对于 Linux/macOS,只需在主目录中编辑 .bash_profile(或 .profile)文件即可完成。所以实际上不需要像 Ashley 在另一个答案中建议的额外的 adb 服务器。

【讨论】:

以上是关于连接到 ADB 服务器的最大设备数的主要内容,如果未能解决你的问题,请参考以下文章

ADB命令

无法使用“adb reverse”连接到开发服务器:spawnSync adb ENOENT

ADB

如何通过 TCP 使用 ADB 连接到 Android? [关闭]

android adb命令使用

ADB连接到华为G Play Mini,未连接,其他设备(acer,samsung)连接良好