我有一个场景需要启动具有特定IP地址的Android Emulator? 我可以像那样启动模拟器吗?
我不想进行IP转发或其他工作,因为在模拟器中运行的Android程序在启动时将使用启动时存在的Android Emulators IP地址进行配置。
默认情况下,模拟器的IP地址是10.0.2.15,我需要更改。 此外,此Ip在init.goldfish.rc和init.goldfish.sh中设置。 如果我改变它们,那么android的ip仍然是10.0.2.15。
答案 0 :(得分:2)
我这样做了:
在Android模拟器中,如果你执行ifconfig,那么你会看到bridge,eth0& eth1作为网络设备。其中bridge的10.0.2.15为ip,eth0为up但没有任何ip,eth1在没有任何ip的情况下关闭。
现在在您的主机上创建一个TAP和Bridge设备,并将您的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
现在,一旦您的TAP启动,并且您的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
在你的android模拟器shell中运行命令:
$netcfg
您应该能够通过ip 0.0.0.0查看eth1,现在在命令下运行以显示eth1:
$netcfg eth1 dhcp
瞧!你有从ip服务器分配的ip地址的eth1。
让我知道它是否有效!!!
现在如果你在外部服务器ip地址的android模拟器开放端口有任何程序,它将通过主机的eth0到外部服务器。