设置Android Emulator的IP地址

设置Android Emulator的IP地址,android,android-emulator,ip,ip-address,static-ip-address,Android,Android Emulator,Ip,Ip Address,Static Ip Address,我有一个场景,需要用特定的IP地址启动Android Emulator? 我可以这样启动模拟器吗 我不想做IP转发或其他事情,因为有一个Android程序在模拟器中运行,它在启动时会使用Android模拟器的IP地址在启动时进行自我配置 默认情况下,emulator的ip地址是10.0.2.15,我需要更改它。 此外,该Ip在init.goldfish.rc和init.goldfish.sh中设置。 如果我改变它们,android的ip仍然是10.0.2.15。我是这样做的: 在Android

我有一个场景,需要用特定的IP地址启动Android Emulator? 我可以这样启动模拟器吗

我不想做IP转发或其他事情,因为有一个Android程序在模拟器中运行,它在启动时会使用Android模拟器的IP地址在启动时进行自我配置

默认情况下,emulator的ip地址是10.0.2.15,我需要更改它。 此外,该Ip在init.goldfish.rc和init.goldfish.sh中设置。
如果我改变它们,android的ip仍然是10.0.2.15。

我是这样做的:

在Android Emulator中,如果您执行ifconfig,那么您将看到网桥、eth0和eth1作为网络设备。其中网桥的10.0.2.15为ip,eth0为上,但无任何ip,eth1为下,无任何ip

现在,在主机上创建一个TAP和桥接设备,并将TAP设备与主机上的任何工作以太网卡桥接

可以按照以下步骤创建TAP设备(tap1)和将其与eth0桥接(br1):

$sudo ip tuntap add dev tap1 mode tap
$sudo ip link show dev tap1
$sudo brctl addbr br1
$sudo brctl addif br1 tap1
$sudo brctl addif br1 eth0
$sudo ip link set eth0 up
$sudo ip link set br1 up
$sudo brctl show
因此,现在一旦您的点击启动,并且如果您的eth1连接到任何dhcp服务器,请启动dhcp服务器。 启动dhcp服务器后,使用以下命令运行仿真器:

$sudo ./emulator -avd <avd_name> -qemu -net nic,vlan=1 -net user,vlan=1,hostname=<hostname_you_want> -net nic,vlan=2,macaddr=<mac_id_of_eth1_of_android_emulator> -net tap,ifname=tap1,script=no,vlan=2
$netcfg
您应该能够看到ip为0.0.0.0的eth1关闭,现在运行下面的命令以打开eth1:

$netcfg eth1 dhcp
瞧!!!您拥有从dhcp服务器分配的ip地址为eth1的服务器

让我知道它是否有效


现在,如果android emulator中有任何程序打开外部服务器ip地址上的端口,它将通过主机的eth0到达外部服务器。

这是不可能的。请参阅init.goldfish.sh fish中的postHi Justin,我将eth0配置为172.0.2.15而不是10.0.2.15,然后在android emulator中执行ifconfig时,我将bridge配置为10.0.2.15,eth0配置为172.0.2.15,那么这意味着什么呢?