【问题标题】:Connect to Android Emulator from Host从主机连接到 Android 模拟器
【发布时间】:2019-12-23 16:14:49
【问题描述】:

我正在开发一个在Android 上运行的Xamarin App,所以我的工具链由Visual StudioAndroid Emulator 系统组成。

当我想从Android 连接到我的主机时,我可以使用别名10.0.2.2

反过来 - 从 Host 到 Android 我无法连接。

使用来自Android 网络设置的IP 地址:没有成功。
使用来自adb shell ifconfig 结果的IP 地址:没有成功。

如何使用正常的网络协议(无 ADB 日志等)连接到 Android 系统?
也许某种ADB shell 命令来创建端口转发?

【问题讨论】:

  • 嗨,你的意思是不能通过 adb 连接到安卓模拟器?尝试重启 adb 服务器:adb kill-server -> adb start-server.
  • 您好,adb连接安卓没问题。问题是从主机上的应用程序连接到模拟器中正在运行的 Android(就像 Android 应用程序提供了我想从主机访问的 REST api)
  • Okey,您是否与邮递员核实过从 Rest Api 获取数据?如果可行,请告诉我。
  • 我无法建立从主机到android的网络连接,这是关键问题
  • 首先你需要一个rest api,然后android设备可以从api获取数据。这里有一篇文章可以参考。android.jlelse.eu/…

标签: android visual-studio xamarin android-emulator


【解决方案1】:

如果想从 Molile 获取 IP,可以尝试以下方法:

using System.Net;
using System.Linq;

var IpAddress = Dns.GetHostAddresses(Dns.GetHostName()).FirstOrDefault();

if (IpAddress != null)
{
    Console.WriteLine("IP is :" + IpAddress.ToString());
}

注意:

如果它们(Android Emulator 和 Android Device)不在同一网段,则无法连接。

【讨论】:

  • 这仅返回 Android 系统知道的 IP 地址(例如模拟的 WiFi) - 因此与 Android 设置的结果和 adb 结果相同。它不适用于从主机到 Android 系统的连接。
  • @auX 一般情况下,首先需要客户端连接到主机,然后主机会记住连接了哪个客户端。
  • 我可以使用 IP 10.0.2.2 从 android 连接到主机,这是模拟器系统中定义明确的别名,但我想使用 Web 浏览器/REST 客户端/等。从宿主机,它托管 android 模拟器以连接到 android 模拟器。为此,这不起作用
  • @auX 他们是否与 WIFI 网络连接?看看这个:developer.android.com/training/connect-devices-wirelessly/… 可能会有所帮助。
  • 不,安卓连接的是安卓模拟器的模拟WiFi,不是真正的WiFi
【解决方案2】:

https://developer.android.com/studio/run/emulator-networking#redirection

使用网络重定向

要与其虚拟路由器后面的模拟器实例通信,您需要在虚拟路由器上设置网络重定向。然后,客户端可以连接到路由器上的指定访客端口,而路由器将往返该端口的流量引导到模拟设备主机端口。

要设置网络重定向,您需要在模拟器实例上创建主机和访客端口/地址的映射。设置网络重定向的方法有两种:使用模拟器控制台命令和使用 adb 工具,如下所述。

查看链接了解完整说明。

【讨论】:

    猜你喜欢
    • 2016-09-14
    • 2012-01-28
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多