2013-03-11 139 views
2

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

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

默认情况下,模拟器的IP地址是10.0.2.15,我需要更改它。 另外,这个Ip在init.goldfish.rc和init.goldfish.sh中设置。 如果我改变它们,android的ip仍然是10.0.2.15。

+1

这是不可能的。请参阅[this](https://groups.google.com/d/msg/android-ndk/C9DHmEF_8vA/4_zCs-zaSNIJ)post – 2013-03-11 23:30:55

+0

Hi Justin 在init.goldfish.sh鱼中,我将eth0替换为172.0.2.15而不是10.0.2.15 然后当我在android模拟器中执行ifconfig时,我将bridge配置为10.0.2.15,eth0配置为172.0.2.15 那么现在这是什么意思? – Rookie 2013-03-12 16:50:50

回答

2

我做这个工作方式:

在Android模拟器如果你使用ifconfig然后你会看到桥,为eth0 & eth1,因为网络设备。哪里网桥有10.0.2.15,因为ip和eth0是up的,但没有任何ip,eth1在没有任何ip的情况下关闭。

现在在您的主机上创建一个TAP和Bridge设备,并将您的TAP设备与主机上的任何工作以太网卡连接起来。

的TAP设备(TAP1)和桥接(BR1),它的eth0可以创建遵循以下步骤:

$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模拟器外壳下面的命令运行:

$netcfg 

你应该能够看到eth1的下降与IP 0.0。 0.0,现在运行下面的命令来调出eth1:

$netcfg eth1 dhcp 

瞧!你有从DHCP服务器分配的IP地址eth1。

让我知道它是否工作!

现在,如果你有任何程序在外部服务器IP地址的Android模拟器开放端口它将通过主机的eth0到外部服务器。