Emulator ini memberikan kapabilitas jaringan serbaguna yang dapat Anda gunakan untuk menyiapkan lingkungan pemodelan dan pengujian yang kompleks untuk aplikasi. Bagian berikut memperkenalkan arsitektur dan kapabilitas jaringan emulator.
Ruang alamat jaringan
Setiap instance emulator berjalan di belakang layanan router/firewall virtual yang mengisolasinya dari antarmuka dan setelan jaringan mesin pengembangan Anda, serta dari internet. Perangkat yang diemulasikan tidak dapat melihat mesin pengembangan Anda atau instance emulator lainnya pada jaringan tersebut. Sebaliknya, hanya terlihat bahwa perangkat terhubung melalui Ethernet ke router/firewall.
Router virtual untuk setiap instance mengelola ruang alamat jaringan 10.0.2/24 - semua alamat yang dikelola oleh router dalam bentuk 10.0.2.xx, dengan xx berupa angka. Alamat di dalam ruang ini telah dialokasikan sebelumnya oleh emulator/router sebagai berikut:
Alamat Jaringan | Deskripsi |
---|---|
10.0.2.1 | Alamat router/gateway |
10.0.2.2 | Alias khusus untuk antarmuka loopback host Anda (misalnya 127.0.0.1 pada mesin pengembangan) |
10.0.2.3 | Server DNS pertama |
10.0.2.4 / 10.0.2.5 / 10.0.2.6 | Server DNS opsional kedua, ketiga, dan keempat (jika ada) |
10.0.2.15 | Antarmuka jaringan/ethernet perangkat yang diemulasikan |
127.0.0.1 | Antarmuka loopback perangkat yang diemulasikan |
Perhatikan bahwa penetapan alamat yang sama digunakan oleh semua instance emulator yang berjalan. Artinya, jika Anda memiliki dua instance yang berjalan bersamaan pada mesin, setiap instance akan memiliki router sendiri dan, di balik itu, setiap instance memiliki alamat IP 10.0.2.15. Instance akan diisolasi oleh router dan tidak dapat saling melihat di jaringan yang sama. Untuk informasi tentang cara mengizinkan instance emulator berkomunikasi melalui TCP/UDP, baca Membuat Interkoneksi Instance Emulator.
Selain itu, perhatikan bahwa alamat 127.0.0.1 pada mesin pengembangan Anda sesuai dengan antarmuka loopback emulator. Jika ingin mengakses layanan yang berjalan di antarmuka loopback mesin pengembangan (yaitu 127.0.0.1 di mesin Anda), Anda harus menggunakan alamat khusus 10.0.2.2 sebagai gantinya.
Terakhir, perhatikan bahwa alamat yang telah dialokasikan sebelumnya dari perangkat yang diemulasikan, dikhususkan untuk Android Emulator dan mungkin akan sangat berbeda pada perangkat nyata (yang juga sangat berpeluang menjalankan proses NAT, khususnya, di belakang router/firewall).
Batas jaringan lokal
Aplikasi Android yang berjalan di emulator dapat terhubung ke jaringan yang tersedia di workstation Anda. Namun, aplikasi terhubung melalui emulator, bukan langsung ke hardware, dan emulator bertindak seperti aplikasi normal di workstation Anda. Hal ini dapat menyebabkan adanya beberapa batasan:
- Komunikasi dengan perangkat yang diemulasikan dapat diblokir oleh program firewall yang berjalan pada mesin Anda.
- Komunikasi dengan perangkat yang diemulasikan dapat diblokir oleh firewall/router (fisik) lain yang terhubung dengan mesin Anda.
Router virtual emulator harus mampu menangani semua pesan/koneksi TCP dan UDP outbound atas nama perangkat yang diemulasikan, asalkan lingkungan jaringan mesin pengembangan Anda mengizinkan untuk melakukannya. Tidak ada batasan bawaan mengenai nomor atau rentang port kecuali yang diberlakukan oleh sistem operasi dan jaringan host Anda.
Bergantung pada lingkungannya, emulator mungkin tidak dapat mendukung protokol lain (seperti ICMP yang digunakan untuk "ping"). Saat ini, emulator tidak mendukung IGMP atau multicast.
Menggunakan pengalihan jaringan
Untuk berkomunikasi dengan instance emulator di belakang router virtualnya, Anda perlu menyiapkan pengalihan jaringan pada router virtual. Klien kemudian dapat terhubung ke port tamu yang ditentukan pada router, sementara router mengarahkan traffic ke/dari port tersebut ke port host perangkat yang diemulasikan.
Untuk menyiapkan pengalihan jaringan, Anda harus membuat pemetaan alamat/port host dan tamu pada instance emulator. Ada dua cara untuk menyiapkan pengalihan jaringan: menggunakan perintah konsol emulator dan menggunakan alat adb, seperti yang diuraikan di bawah ini.
Menyiapkan pengalihan melalui Konsol Emulator
Setiap instance emulator menyediakan konsol kontrol tempat Anda dapat terhubung, untuk
mengeluarkan perintah yang dikhususkan untuk instance tersebut. Anda dapat menggunakan
perintah konsol redir
guna menyiapkan pengalihan seperti yang diperlukan untuk sebuah
instance emulator.
Pertama, tentukan nomor port konsol untuk instance emulator target. Misalnya, nomor port konsol untuk instance emulator pertama yang diluncurkan adalah 5554. Selanjutnya, hubungkan ke konsol instance emulator target, dengan menentukan nomor port konsolnya, sebagai berikut:
telnet localhost 5554
Setelah terhubung, gunakan perintah redir
untuk menangani pengalihan.
Untuk menambahkan pengalihan, gunakan:
add <protocol>:<host-port>:<guest-port>
di mana <protocol>
adalah tcp
atau udp
,
dan <host-port>
serta <guest-port>
menetapkan
pemetaan antara perangkat Anda dan sistem yang diemulasikan.
Misalnya, perintah berikut akan menyiapkan pengalihan yang menangani semua koneksi TCP masuk ke mesin host (pengembangan) di 127.0.0.1:5000 dan akan meneruskannya ke sistem yang diemulasikan di 10.0.2.15:6000:
redir add tcp:5000:6000
Untuk menghapus pengalihan, Anda dapat menggunakan perintah redir del
. Guna
mencantumkan semua pengalihan untuk instance tertentu, Anda dapat menggunakan redir
list
. Untuk informasi selengkapnya tentang hal ini dan perintah konsol lainnya, baca
Menggunakan Konsol Emulator.
Perhatikan bahwa nomor port dibatasi oleh lingkungan lokal Anda. Hal ini biasanya
berarti Anda tidak dapat menggunakan nomor port host di bawah 1024 tanpa hak
istimewa administrator. Selain itu, Anda tidak akan dapat menyiapkan pengalihan untuk
port host yang sudah digunakan oleh proses lain di mesin Anda. Dalam hal
ini, redir
akan menghasilkan pesan error.
Menyiapkan pengalihan melalui adb
Alat Android Debug Bridge (adb) menyediakan penerusan port, yaitu cara lain bagi Anda untuk menyiapkan pengalihan jaringan. Untuk mengetahui informasi selengkapnya, baca Port Penerusan dalam dokumentasi adb.
Perhatikan bahwa adb saat ini tidak menawarkan cara apa pun untuk menghapus pengalihan, kecuali dengan mematikan server adb.
Mengonfigurasi setelan DNS emulator
Saat proses memulai, emulator akan membaca daftar server DNS yang saat ini digunakan oleh sistem Anda. Kemudian emulator akan menyimpan alamat IP hingga empat server dalam daftar ini dan menyiapkan alias di alamat 10.0.2.3, 10.0.2.4, 10.0.2.5 dan 10.0.2.6 yang diemulasikan jika perlu.
Di Linux dan OS X, emulator memperoleh alamat server DNS dengan
menguraikan file /etc/resolv.conf
. Di Windows, emulator mendapatkan
alamat dengan memanggil API GetNetworkParams()
. Perlu dicatat, hal ini
biasanya berarti emulator mengabaikan isi file
"hosts" (/etc/hosts
di Linux/OS X, %WINDOWS%/system32/HOSTS
di Windows).
Saat memulai emulator di command line, Anda juga dapat menggunakan
opsi -dns-server <serverList>
untuk menentukan
secara manual alamat server DNS yang akan digunakan, dengan <serverList>
adalah daftar nama server
atau alamat IP yang dipisahkan koma. Anda akan menyadari manfaat opsi ini saat
menghadapi masalah resolusi DNS di jaringan yang diemulasikan (misalnya,
pesan "Error Host Tidak Dikenal" yang muncul ketika menggunakan browser web).
Menggunakan emulator dengan proxy
Pada berbagai jaringan perusahaan, koneksi langsung ke internet tidak akan berfungsi (ditolak oleh administrator jaringan), kecuali jika terjadi melalui proxy tertentu. Browser web dan aplikasi perusahaan lainnya telah dikonfigurasikan sebelumnya untuk menggunakan proxy tersebut, sehingga Anda dapat menelusuri web. Untuk aplikasi reguler, seperti emulator, perlu mengetahui adanya proxy dan harus terhubung dengan aplikasi tersebut.
Karena sifat HTTP, koneksi server web langsung dan koneksi melalui proxy menyebabkan perbedaan permintaan GET. Emulator secara transparan menulis ulang permintaan GET dari perangkat virtual sebelum berkomunikasi dengan proxy agar berfungsi.
Jika emulator Anda harus mengakses internet melalui server proxy, Anda dapat mengonfigurasi
proxy HTTP kustom dari layar Extended controls emulator. Saat emulator
terbuka, klik More , lalu klik Settings dan
Proxy. Dari sini, Anda dapat menentukan setelan proxy HTTP Anda sendiri.

Selain itu, Anda dapat mengonfigurasi proxy dari command line dengan
opsi -http-proxy <proxy>
saat memulai emulator.
Dalam hal ini, Anda menentukan informasi
proxy di <proxy>
dalam salah satu format berikut:
http://<machineName>:<port>
atau
http://<username>:<password>@<machineName>:<port>
Opsi -http-proxy
memaksa emulator menggunakan proxy HTTP/HTTPS yang ditentukan
untuk semua koneksi TCP ke luar. Pengalihan untuk UDP saat ini tidak
didukung.
Atau, Anda dapat menentukan variabel lingkungan
http_proxy
ke nilai yang ingin Anda gunakan untuk
<proxy>
. Dalam hal ini, Anda tidak perlu menentukan nilai untuk
<proxy>
dalam perintah -http-proxy
— emulator
akan memeriksa nilai variabel lingkungan http_proxy
saat
perangkat dinyalakan dan secara otomatis menggunakan nilainya, jika ditentukan.
Anda dapat menggunakan opsi -debug-proxy
untuk mendiagnosis masalah
koneksi proxy.
Membuat interkoneksi instance emulator
Untuk mengizinkan satu instance emulator berkomunikasi dengan yang lain, Anda harus menyiapkan pengalihan jaringan yang diperlukan seperti yang digambarkan di bawah ini.
Anggaplah bahwa lingkungan Anda
- A adalah mesin pengembangan
- B adalah instance emulator pertama, berjalan di A
- C adalah instance emulator kedua, juga berjalan di A
dan Anda ingin menjalankan server di B, yang akan dihubungkan ke C, berikut ini cara menyiapkannya:
- Siapkan server di B, yang memproses
10.0.2.15:<serverPort>
- Di konsol B, siapkan pengalihan dari
A:localhost:<localPort>
keB:10.0.2.15:<serverPort>
- Di C, minta klien agar terhubung ke
10.0.2.2:<localPort>
Misalnya, jika ingin menjalankan server HTTP, Anda dapat memilih
<serverPort>
sebagai 80 dan <localPort>
sebagai
8080:
- B memproses di 10.0.2.15:80
- Di konsol B, terbitkan
redir add tcp:8080:80
- C terhubung ke 10.0.2.2:8080
Mengirim panggilan suara atau SMS ke instance emulator lain
Emulator akan otomatis meneruskan panggilan suara dan SMS yang disimulasikan dari satu instance ke instance lainnya. Untuk mengirim panggilan suara atau SMS, gunakan aplikasi telepon atau aplikasi SMS, dari salah satu emulator.
Untuk memulai panggilan suara yang disimulasikan ke instance emulator lain:
- Buka aplikasi telepon pada instance emulator asal.
- Untuk nomor yang akan dihubungi, masukkan nomor port konsol instance yang ingin Anda panggil. Anda dapat menentukan nomor port konsol dari instance target dengan memeriksa judul jendelanya, yang nomor port konsol tersebut dilaporkan sebagai "Android Emulator (<port>).
- Tekan "Dial". Panggilan masuk baru akan muncul pada instance emulator target.
Untuk mengirim SMS ke instance emulator lain, buka aplikasi SMS (jika tersedia). Tentukan nomor port konsol instance emulator target sebagai alamat SMS, masukkan teks pesan, lalu kirim pesan. Pesan akan terkirim ke instance emulator target.
Anda juga dapat terhubung ke konsol emulator untuk menyimulasikan panggilan suara atau SMS yang masuk. Untuk informasi selengkapnya, baca Emulasi Telepon dan Emulasi SMS.