2

特定の IP アドレスで Android Emulator を起動する必要があるシナリオがありますか? そのようなエミュレータを起動できますか?

エミュレーターで実行されている Android プログラムが起動時に存在する Android エミュレーターの IP アドレスで構成されているため、IP 転送やその他の処理を実行したくありません。

デフォルトでは、エミュレータの IP アドレスは 10.0.2.15 であるため、これを変更する必要があります。また、この Ip は init.goldfish.rc と init.goldfish.sh に設定されています。それらを変更しても、AndroidのIPは10.0.2.15です。

4

1 に答える 1

2

私はこの方法で仕事をしました:

Android Emulatorでifconfigを実行すると、ネットワークデバイスとしてbridge、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

したがって、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

ip 0.0.0.0でeth1がダウンしているのを確認できるはずです。次に、コマンドの下で実行してeth1を起動します。

$netcfg eth1 dhcp

そして出来上がり!!! DHCPサーバーから割り当てられたIPアドレスを持つeth1があります。

それがうまくいくかどうか私に知らせてください!!!

これで、Androidエミュレーターに外部サーバーのIPアドレスのポートを開くプログラムがある場合、それはホストマシンのeth0を経由して外部サーバーに到達します。

于 2013-03-14T17:10:41.263 に答える