我在 PC 上的 Android 模拟器中运行一些 Android 代码。我想在我的 Android 代码中获取 PC 的本地 IP 地址,不确定这是否可能......
我已经检查了以下帖子 如何通过代码在android模拟器中获取PC的IP地址 但看起来它只能给我PC的公共IP地址。
谢谢。
我在 PC 上的 Android 模拟器中运行一些 Android 代码。我想在我的 Android 代码中获取 PC 的本地 IP 地址,不确定这是否可能......
我已经检查了以下帖子 如何通过代码在android模拟器中获取PC的IP地址 但看起来它只能给我PC的公共IP地址。
谢谢。
您可以在此处查看我自己的答案,以验证您的 Android 模拟器实例可访问的各种设备的路由:
10.0.2.2
可以使用模拟器中的 IP 地址访问主机。这些是从模拟器获得的 IP 地址:
10.0.2.1
, 路由器/网关地址。10.0.2.2
, 主机环回接口的特殊别名(即开发机器上的 127.0.0.1)10.0.2.3
, 第一个 DNS 服务器10.0.2.4
//10.0.2.5
,10.0.2.6
可选的第二、第三和第四个DNS服务器(如果有的话)10.0.2.15
, 仿真设备自己的网络/以太网接口127.0.0.1
, 仿真设备自己的环回接口
包含说明的完整列表可以在“模拟器网络”的 Android 文档中找到。
通常,应将 android 设备或模拟器视为与您的开发计算机分开的计算机。
也就是说,如果您想从 android 模拟器/设备连接到本地计算机,那么这里有 2 个选项供您选择。
使用将名称指向本地 PC 的内部 DNS,如果这是您想要的,您甚至可以使用它覆盖“实时”url。
使用 BuildConfig.DEBUG 标志或类似机制在实时和调试 URL/资源之间切换
例如,要在导出时在实时 URL 之间切换,在测试时进行调试,我使用:
public final class MyAppConstants
{
// url base for all requests to my API
public static final String BASE_URL;
// auto-switch between live and debug urls based on usage
static
{
if (BuildConfig.DEBUG)
{
URL_BASE = "http://debug.server.com/";
}
else
{
URL_BASE = "http://live.server.com/";
}
}
}