Membuat interkoneksi instance Emulator

Untuk menguji aplikasi yang melibatkan interaksi multi-perangkat, Anda dapat menghubungkan beberapa instance Android Emulator sehingga dapat berkomunikasi satu sama lain. Metode untuk membuat koneksi bergantung pada versi emulator yang Anda gunakan.

Emulator Android Versi 36.5 dan yang Lebih Baru

Android Emulator Versi 36.5 dan yang lebih baru menawarkan model jaringan yang disederhanakan yang menghubungkan instance melalui jaringan Wi-Fi bersama.

Dengan stack jaringan ini, beberapa emulator muncul sebagai perangkat yang berbeda di jaringan Wi-Fi virtual yang sama. Hal ini memungkinkan perangkat saling menemukan dan berkomunikasi secara otomatis menggunakan protokol berbasis Wi-Fi standar.

Emulator dapat saling menemukan di jaringan virtual menggunakan teknologi seperti Network Service Discovery (NSD) dan Wi-Fi Direct.

Karena emulator berada di jaringan Wi-Fi yang sama, Anda juga dapat menemukan alamat IP spesifik emulator dan terhubung langsung ke alamat IP tersebut dari instance emulator lain. Untuk mendapatkan alamat IP antarmuka Wi-Fi virtual (wlan0), jalankan perintah berikut dari mesin host Anda:

adb shell ip addr show wlan0

Android Emulator Sebelum Versi 36.5

Jika Anda menggunakan versi Android Emulator yang lebih lama, komunikasi langsung antar-instance tidak dapat dilakukan secara default. Setiap instance emulator beroperasi di belakang router virtualnya sendiri, sehingga mengisolasinya dari jaringan lokal dan emulator lainnya.

Untuk mengaktifkan komunikasi, Anda harus menyiapkan pengalihan jaringan secara manual. Proses ini melibatkan pembuatan pemetaan yang meneruskan traffic dari port tertentu di mesin host Anda ke port di perangkat yang diemulasikan, dengan melewati router virtual.

Anda dapat mengonfigurasi pengalihan jaringan dengan dua cara:

  1. Perintah Konsol Emulator: Gunakan konsol bawaan untuk menyiapkan pemetaan port untuk instance emulator yang sedang berjalan.
  2. Android Debug Bridge (adb): Gunakan perintah adb untuk mengonfigurasi aturan penerusan port yang diperlukan.

Menyiapkan pengalihan melalui konsol emulator

Setiap instance emulator menyediakan konsol kontrol tempat Anda dapat terhubung, dan mengeluarkan perintah yang dikhususkan untuk instance tersebut. Gunakan perintah konsol redir untuk menyiapkan pengalihan sesuai kebutuhan untuk 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, Anda harus mengautentikasi sebelum dapat menyiapkan pengalihan. Lihat Memulai dan menghentikan sesi konsol untuk mengetahui detail cara melakukannya. Setelah terhubung, gunakan perintah redir untuk menangani pengalihan.

Untuk menambahkan pengalihan, gunakan perintah berikut:

    redir add <protocol>:<host-port>:<guest-port>

Dengan <protocol> adalah tcp atau udp, serta <host-port> dan <guest- port> menetapkan pemetaan antara mesin Anda dan sistem yang diemulasi.

Misalnya, perintah berikut akan menyiapkan pengalihan yang menangani semua koneksi TCP masuk ke mesin host (pengembangan) di 127.0.0.1:5000 dan meneruskannya ke sistem yang diemulasikan di 10.0.2.15:6000:

    redir add tcp:5000:6000

Untuk menghapus pengalihan, gunakan perintah redir del. Untuk mencantumkan semua pengalihan untuk instance tertentu, gunakan redir list. Untuk mengetahui informasi selengkapnya tentang hal ini dan perintah konsol lainnya, lihat Mengirim perintah konsol Emulator.

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 khusus. 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, lihat Menyiapkan penerusan port dalam dokumentasi adb.

adb saat ini tidak menawarkan cara untuk menghapus pengalihan kecuali dengan menghentikan server adb.

Membuat interkoneksi instance emulator

Agar satu instance emulator dapat berkomunikasi dengan instance lain, siapkan pengalihan jaringan seperti yang dijelaskan dalam langkah-langkah berikut.

Asumsikan bahwa lingkungan Anda adalah sebagai berikut:

  • A adalah mesin pengembangan
  • B adalah instance emulator pertama dan berjalan di A
  • C adalah instance emulator kedua dan juga berjalan di A

Jika Anda ingin menjalankan server di B yang akan dihubungkan ke C, siapkan server seperti berikut:

  1. Siapkan server di B, yang memproses 10.0.2.15:<serverPort>.
  2. Di konsol B, siapkan pengalihan dari A: localhost:<localPort> ke B: 10.0.2.15:<serverPort>.
  3. Di C, hubungkan klien ke 10.0.2.2:<localPort>.

Misalnya, jika Anda ingin menjalankan server HTTP, pilih <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.