5

我正在开发一个应用程序(使用 Eclipse + Android SDk/NDK),它使用 android 手机上的 micro-usb 端口连接到外围设备。我正在尝试通过 WiFi(tcp 端口 5555)连接到手机上的 ADB 守护程序,以便可以在 Eclipse 中调试我的应用程序。但是,我无法让它工作。

我没有尝试实际导致手机上的 ADB 守护进程切换到 TCPIP 模式(据我通过查看 的输出可知getprop)。问题似乎是我无法service.adb.tcp.port在手机上设置相关属性。我使用的开发手机是运行 CyanogenMod 7.0.0 (Android v2.3.3) 的 LG GT540。开发机器是运行 OS X Lion 的 iMac。

以下是有关我尝试/确认/发现的一些相关信息:

  • 手机已root ( ru.secure = 0)
  • 通过 USB 连接到 ADB 工作正常
  • Mac 上的 adb 服务以 root ( adb root)身份运行
  • adb shell给我一个具有超级用户访问权限的 shell(# 提示符、su、编辑系统文件的能力等)
  • adb tcpip 5555从 Mac 上的终端窗口运行时不会抱怨或抛出错误,但不会service.adb.tcp.port在手机上设置属性
  • setprop service.adb.tcp.port 5555在手机终端窗口的#提示符下输入不会抱怨或抛出错误但不会设置service.adb.tcp.port属性
  • setprop persist.service.adb.enable 0适用于 Mac 和手机外壳(通过检查 ADB 守护进程停止并getprop为启用属性返回 0 来确认)
  • setprop persist.service.adb.enable 1在 Mac 和手机外壳上都可以正常工作(通过检查 ADB 守护程序启动并getprop为启用属性返回 1 来确认)
  • 手机上与手机上的 ADB 相关的唯一属性是persist.service.adb.enableinit.svc.adbd(如果 ADB 正在运行)(由getprop | grep adb手机上确认)
  • 市场上声称“自动”配置 ADB for Wifi(例如WiFi ADB)的应用程序也不起作用(tcp.port属性未设置且 ADB over TCP 不起作用)

我在这里看起来太努力了,错过了一些明显的东西吗?互联网上有很多关于让 ADB 通过 TCP 工作的问题的帖子和文章,但它们都与电话 root 问题有关。

是否有人能够阐明为什么我似乎无法设置此特定属性或提出任何其他可能阻止 ADB 守护程序在 TCPIP 模式下运行的问题?

4

3 回答 3

0

对于任何设备(无论是否植根),它都应该非常简单:

  1. 连接到 USB
  2. adb tcpip <port>

如果它工作,你会看到restarting in TCP mode port: <port>吐出终端。如果你什么也没看到,那就是没有。

该属性由守护程序为您设置。指导您设置属性并重新启动 adbd 的教程侧重于需要在设备上执行的代码(即,如果您正在通过 WiFi 应用程序编写 ADB)。

但是,您提到您正在使用 Cyanogenmod。CM 在开发人员选项中没有“ADB over Network”设置吗(我发誓它在 CM7 中有)?我知道他们选择的端口是 5555。您可能会在尝试手动执行该功能时遇到冲突。可能最好使用系统内置的东西(如果有的话)。

于 2015-02-18T04:56:08.863 回答
0

您需要在手机上停止然后重新启动 adbd 才能使 tcp 端口属性生效。

  • setprop service.adb.tcp.port 5555
  • 停止 adbd
  • 启动 adbd
于 2015-02-18T04:21:58.427 回答
0

在应用程序开始时添加 1 行。

setprop service.adb.tcp.port 5555 && stop adbd && start adbd

这会在启动时重置 adb!

于 2017-03-24T09:50:50.393 回答