我在Windows上使用android模拟器。 android开发人员doc说,模拟器的每个实例都运行在虚拟路由器/防火墙服务之后。每个实例的虚拟路由器管理10.0.2 / 24网络地址空间。但是,当我使用adb shell
连接到模拟器并执行ifconfig
时,我得到以下输出:
radio0 Link encap:UNSPEC inet addr:192.168.200.2 Bcast:192.168.200.255 Mask:255.255.255.0
wlan0链接封装:UNSPEC inet addr:192.168.232.2 Bcast:192.168.239.255 Mask:255.255.248.0
ip route show
为我提供了以下输出
192.168.200.0/24 dev radio0 proto kernel scope link src 192.168.200.2
192.168.232.0/21 dev wlan0 proto kernel scope link src 192.168.232.2
我没有看到任何10.2.x.x的ip地址。这些IP地址在哪里?
虚拟路由器是否也在模拟器中运行(在Android OS上)或在Windows上运行?如何检查虚拟路由器?
答案 0 :(得分:4)
我在Windows上运行Android 7.1.1(API 25)时遇到同样的问题。
但是,当我模仿Android 7.0(API 24)时,它按预期工作。设备获得IP 10.0.2.15。在这种情况下,ip route show
将带来10.2.x.x地址。因此,如果您可以使用以前的版本(API 16 - API 24)。
此路由器存在于模拟器中,Windows无法识别它。 如果需要从Windows访问在模拟器中运行的服务,则需要添加端口映射:
telnet localhost 5554
auth <token from 'C:\Users\{user}\.emulator_console_auth_token'>
redir add tcp:8080:8080
然后您可以通过以下方式访问您的服务:127.0.0.1:8080。但是,这种方法不适用于Android 7.1.1。我不知道它有什么问题。
答案 1 :(得分:0)
看来,自API 25以来,仿真器的网络已更改。设备IP不再是10.0.2.15,并且已通过记录在telnet上发出“ redir”命令,不再起作用。
为了进行重定向,请使用adb程序。首先,确保adb在您的earch路径中。通常,它位于Android / Sdk / platform-tools下,无论您位于什么位置,无论使用什么操作系统,都可以安装Android SDK。
然后,使用以下命令行:
adb forward tcp:<host port> tcp:<guest port>
(例如:adb forward tcp:8080 tcp:8080
)。现在,您可以使用telnet localhost <host port>
访问端口,该端口将被重定向到来宾。
这是非常不幸的,因为(从内部版本28开始)没有这样记录。我认为某些时候文档会被修复。
答案 2 :(得分:0)
实际上这取决于。我已在“Android 11 API 30 模拟器”和“Android TV 9 API 28 模拟器”上连接并测试了我的 SFTP Server 应用。
在“Android 11 API 30 Emulator”上,我的 SFTP 服务器应用程序显示在侦听 IP 10.0.2.16 和端口 6789,我可以使用 redir add tcp:<localhost-port>:6789
连接到它(更多详细信息请参阅 Setting up redirection through the Emulator Console)。但我也可以使用 adb -s <emulator-id> forward tcp:<localhost-port> tcp:6789
连接到它。
在“Android TV 9 API 28 Emulator”上,我的 SFTP 服务器应用程序显示在侦听 IP 192.168.232.2 和端口 6789,我只能使用 adb -s <emulator-id> forward tcp:<localhost-port> tcp:6789
连接到它。我无法使用 redir add tcp:<localhost-port>:6789
连接到它。
结论“adb forward”始终有效,因此应该使用。 (不要使用仅在地址范围 10.0.2.0/24 有时有效的“redir add tcp”)。