【问题标题】:android connect to PC's localhost when debugger on mobile deviceandroid在移动设备上调试时连接到PC的localhost
【发布时间】:2012-07-04 22:13:53
【问题描述】:

我想调试我的 android 应用程序,我使用 USB 电缆将 android 设备连接到我的 PC。在我的应用程序中有一个连接本地主机的按钮,本地主机的 ip 是10.0.2.2,端口是8080,我已经读到在移动设备上调试时,ip 10.0.2.2 是 android 设备的本地主机,而不是我的电脑,那么我应该对 ip 而不是 10.0.2.2 进行哪些更改?还是我必须再做一次改变? 在这种情况下,我的安卓设备是sony ericsson xperia arc s

【问题讨论】:

  • 你使用的是哪个服务器??.. 比如 wamp 或 xampp
  • eclipse 上的tomcat java,数据库的xampp
  • 您的意思是mysql 用于数据库?
  • 系统的IP类似于192.168.X.X,你可以使用命令ipconfig找到它
  • 把 192.168.1.101 代替 10.0.2.2 让我知道发生了什么......

标签: android


【解决方案1】:

我认为你有两个选择

当您使用真正的 android 设备时,第一个是使用 10.0.2.3。它适用于我。

您的第二个选择是从您的电脑创建热点并将您的安卓设备连接到热点。

使用 cmd 类型“ipconfig”查找 ip 地址,将 localhost 替换为 ip 地址。

谢谢。

【讨论】:

  • 10.0.2.3 不存在
【解决方案2】:

Google 在 Chrome 29 及更高版本中添加了支持,以便在 Android 版 Chrome 上使用反向端口转发通过 USB 电缆访问本地开发计算机上托管的网站。可在以下 URL 找到设置说明:

从桌面版 Chrome 30 起,反向端口转发不再是 Chrome 中的实验性功能。可以通过在 PC 的地址栏中键入 about:inspect 并单击“启用端口转发”复选框并单击位于窗口右上角的“配置端口转发”按钮来访问它。

完成后,通过 USB 连接您的移动设备。在您的移动设备上打开 Chrome 到 localhost:8000(或您在本地服务器上配置的任何端口)。

反向端口转发功能将确保您的 Android 设备现在可以看到您 PC 的 localhost

【讨论】:

  • Chrome 现在让这一切变得非常简单 - 无需再配置本地服务器,一切都会自动完成。它还解决了必须配置防火墙以允许外部连接的问题,而这是许多其他技术所需要的。
  • 正确答案应该改成这个。
  • 我认为这实际上应该链接到developers.google.com/web/tools/chrome-devtools/…
  • 这也没有说明在开发机器上配置防火墙。
【解决方案3】:

因为 10.0.2.2 是您的系统 (pc) 的本地主机地址(仅来自模拟器)。实际上 android 无法识别 url 中的 localhost 。所以 10.0.2.2 就是这个意思。对于 android 设备环回地址也是 127.0.0.1

您的 10.0.2.2 网址是正确的。您也可以使用系统的静态 IP

检查一下

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

在应用程序的清单文件中。

编辑:

这里您使用的是 8080 端口,因此请尝试在您的主机上使用 adb 命令

adb forward tcp:8080 tcp:8080

另外请详细说明这一行“我想在我的手机上调试我的应用程序”

注意:

如果您要在真实设备上进行测试,请使用系统 (PC) 的网络 IP

【讨论】:

  • 我已经设置了该权限,所以我无法从手机访问我的本地主机?
  • 当您与 USB 端口通信时,通过 adb forward 命令您可以打开特定端口以与您的应用程序和主机(服务器-客户端)进行通信。你不能失去任何东西。
  • 我发出了那个命令,仍然是10.0.2.2,但手机没有连接到服务器
  • 欢迎好友..!快乐编码..!
  • 这个答案不应该被接受,因为它既不能解决也不能识别实际问题。根本问题是 10.0.2.2 地址仅对 模拟器 可用,而对物理设备不可用。
【解决方案4】:

您可以通过 Wi-Fi 共享 Mac 的互联网连接。然后,您的 Android 应用程序可以通过 Wi-Fi 通过 HTTP 连接到在 Mac 上运行的 Servlet。步骤是:

  1. 在 Mac 上运行系统偏好设置
  2. 转到“共享”标签
  3. 打开“互联网共享”
  4. 在“共享您的连接”组合中选择“以太网”
  5. 在“使用的计算机”列表框中选择“Wi-Fi”
  6. 使用“Wi-Fi 选项...”按钮配置 Wi-Fi 安全性。现在,您的 Mac 是一台 Wi-Fi 服务器,并且正在共享其以太网互联网连接。
  7. 配置您的 Android 设备的 Wi-Fi 以连接到您的 Mac(在“设置”命令中)
  8. 在您的 Mac 上,转到“系统偏好设置”中的“网络”选项卡,然后在列表中选择“Wi-Fi”以找出您的 Mac 在 Wi-Fi 网络上的 IP 地址(对我来说是 169.254.66.223)
  9. 在您的 Android 应用程序中,您现在可以使用“http://169.254.66.223:8080/YourServer/YourServlet”连接到 Mac 中的 Servlet

【讨论】:

    【解决方案5】:

    为此,您需要对您的 xampp 服务器进行一些更改... 为您的系统分配 1 个静态 IP 地址,然后您需要将您的 xampp 服务器置于在线模式。之后,您可以在您的 android 应用程序中使用该 IP 地址而不是 10.0.2.2。对我来说很好,因为我在我的 android 应用程序中使用我的本地主机。

    【讨论】:

    • 我的服务器是tomcat,为了处理数据库mysql我正在使用xampp,如果数据库的xampp是xampp服务器的意思,请告诉我如何为系统分配静态IP ,以及如何将 xampp 服务器置于在线模式,但我告诉过你 xampp 仅用于数据库,myserver 是 eclipse 上的 java tomcat
    • 只要检查你系统的IP地址。由于您使用的是 tomcat 服务器,因此无需将 xampp 置于在线模式,但它应该处于运行模式。您可以使用您的系统 ip 加上您的 tomcat 端口号来访问您的 Web 服务文件。例如,如果你的系统 IP 地址是 192.111.1.111,你的 tomcat 端口号是 8080(默认),那么你需要使用 192.111.1.111:8080 而不是 10.0.2.2...
    猜你喜欢
    • 2020-10-27
    • 2016-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 2012-04-16
    • 1970-01-01
    相关资源
    最近更新 更多