Mengirim perintah konsol emulator

Setiap perangkat virtual yang berjalan menyediakan konsol yang memungkinkan Anda membuat kueri dan mengontrol lingkungan perangkat yang diemulasikan. Misalnya, Anda dapat menggunakan konsol untuk mengelola pengalihan port, karakteristik jaringan, dan peristiwa telepon saat aplikasi Anda berjalan di emulator.

Perintah berikut ini mewajibkan Anda sudah menjalankan emulator. Untuk informasi selengkapnya tentang menjalankan emulator, lihat Menjalankan aplikasi di Android Emulator dan Memulai emulator dari command line.

Memulai dan menghentikan sesi konsol

Untuk mengakses konsol dan memasukkan perintah dari jendela terminal, gunakan telnet agar terhubung ke port konsol dan berikan token autentikasi Anda. Setiap kali konsol menampilkan OK, artinya konsol siap menerima perintah. Tidak ada perintah umum.

Agar terhubung ke konsol perangkat virtual yang berjalan:

  1. Buka jendela terminal dan masukkan perintah berikut:

    telnet localhost console-port
    

    Judul jendela emulator mencantumkan nomor port konsol saat berjalan di jendela terpisah, tetapi tidak saat berjalan di jendela alat. Misalnya, judul jendela untuk emulator yang menggunakan port konsol 5554 bisa menjadi Pixel8_API_34:5554. Selain itu, perintah adb devices mencetak daftar perangkat virtual yang berjalan beserta nomor port konsolnya. Untuk mengetahui informasi selengkapnya, lihat Kueri untuk perangkat.

    Catatan: Emulator akan memproses koneksi pada port 5554 hingga 5585 dan menerima koneksi dari localhost saja.

  2. Setelah konsol menampilkan OK, masukkan perintah auth auth_token.

    Sebelum Anda dapat memasukkan perintah konsol, konsol emulator memerlukan autentikasi. auth_token harus cocok dengan isi file .emulator_console_auth_token di direktori beranda Anda.

    Jika file tersebut tidak ada, perintah telnet localhost console-port akan membuat file yang berisi token autentikasi yang dibuat secara acak. Untuk menonaktifkan autentikasi, hapus token dari file .emulator_console_auth_token atau buat file kosong jika tidak ada.

  3. Setelah Anda terhubung ke konsol, masukkan perintah konsol.

    Masukkan help, help command, atau help-verbose untuk melihat daftar perintah konsol dan mempelajari perintah khusus.

  4. Untuk keluar dari sesi konsol, masukkan quit atau exit.

Berikut ini adalah contoh sesi:

$ telnet localhost 5554
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Android Console: Authentication required
Android Console: type 'auth <auth_token>' to authenticate
Android Console: you can find your <auth_token> in
'/Users/me/.emulator_console_auth_token'
OK
auth 123456789ABCdefZ
Android Console: type 'help' for a list of commands
OK
help-verbose
Android console command help:
    help|h|?         Prints a list of commands
    help-verbose     Prints a list of commands with descriptions
    ping             Checks if the emulator is alive
    automation       Manages emulator automation
    event            Simulates hardware events
    geo              Geo-location commands
    gsm              GSM related commands
    cdma             CDMA related commands
    crash            Crashes the emulator instance
    crash-on-exit    Simulates crash on exit for the emulator instance
    kill             Terminates the emulator instance
    restart          Restarts the emulator instance
    network          Manages network settings  (ethernet and cellular only)
    power            Power related commands
    quit|exit        Quits control session
    redir            Manages port redirections
    sms              SMS related commands
    avd              Controls virtual device execution
    qemu             QEMU-specific commands
    sensor           Manages emulator sensors
    physics          Manages physical model
    finger           Manages emulator finger print
    debug            Controls the emulator debug output tags
    rotate           Rotates the screen clockwise by 90 degrees
    screenrecord     Records the emulator's display
    fold             Folds the device
    unfold           Unfolds the device
    multidisplay     Configures the multi-display
    nodraw           turn on/off NoDraw mode. (experimental)
    resize-display   resize the display resolution to the preset size
    virtualscene-image  customize virtualscene image for virtulscene camera
    proxy            manage network proxy server settings
    phonenumber      set phone number for the device

try 'help <command>' for command-specific help
OK
exit
Connection closed by foreign host.

Perintah fire-and-forget

Jika Anda tidak perlu membuka sesi, gunakan pintasan adb emu, yang mengeksekusi perintah dan segera mengembalikan kontrol ke shell pemanggilan:

adb emu command commandParameter

Pemanggilan dengan adb emu terhubung ke emulator yang tersedia. Jika menjalankan beberapa emulator secara bersamaan, Anda harus meneruskan serial emulator tertentu yang menjadi target Anda:

adb -s emulator-serial emu command commandParameter

Referensi perintah emulator

Daftar berikut mendeskripsikan perintah konsol emulator beserta parameter dan nilainya:

Perintah umum

  • avd {stop| start| status| name} Meminta, mengontrol, dan mengelola perangkat virtual, sebagai berikut:

    • stop: Menghentikan eksekusi perangkat.
    • start: Memulai eksekusi perangkat.
    • status: Meminta status perangkat virtual, yang dapat berupa berjalan atau berhenti.
    • name: Meminta nama perangkat virtual.
  • avd snapshot {list| save name| load name| delete name} Menyimpan dan memulihkan status perangkat dalam snapshot, sebagai berikut:

    • list: Mencantumkan semua snapshot yang disimpan.
    • save name: Menyimpan snapshot sebagai nama.
    • load name: Memuat snapshot yang bernama.
    • delete name: Menghapus snapshot bernama.

    Contoh berikut menyimpan snapshot dengan nama firstactivitysnapshot:

    avd snapshot save firstactivitysnapshot
    
  • fold: Melipat perangkat untuk menampilkan konfigurasi dengan layar lebih kecil, jika perangkat dapat dilipat dan saat ini sedang terbuka.

  • unfold: Membuka lipatan perangkat untuk menampilkan konfigurasi layar yang lebih besar, jika perangkat dapat dilipat dan saat ini sedang terlipat.

  • kill: Menghentikan perangkat virtual.

  • ping: Memeriksa apakah perangkat virtual sedang berjalan.

  • rotate: Memutar AVD berlawanan arah jarum jam dalam kelipatan 45 derajat.

Menghentikan emulator

  • crash: Menghentikan emulator selama menjalankan aplikasi.

  • crash-on-exit: Menghentikan emulator saat aplikasi ditutup.

Tag debug

  • tag debug ...: Mengaktifkan atau menonaktifkan pesan debug dari bagian emulator tertentu. Parameter tag harus berupa nilai dari daftar tag debug yang muncul saat Anda menjalankan emulator -help-debug-tags. Untuk mengetahui informasi selengkapnya tentang opsi -help-debug-tags, lihat tabel opsi yang umum digunakan. Contoh berikut mengaktifkan tag radio:

    debug radio
    

Pengalihan port

  • redir list: Mencantumkan pengalihan port saat ini.

  • redir add protocol:host-port:guest-port Menambahkan pengalihan port baru, sebagai berikut:

    • protocol: Harus berupa tcp atau udp.
    • host-port: Nomor port yang harus dibuka pada host.
    • guest-port: Nomor port untuk merutekan data pada emulator.
  • redir del protocol:host-port Menghapus pengalihan port.

    • protocol: Harus berupa tcp atau udp.
    • host-port: Nomor port yang harus dibuka pada host.

Lokasi geografis

Menyetel lokasi geografis yang dilaporkan ke aplikasi yang berjalan dalam emulator dengan mengirimkan perbaikan GPS ke emulator.

Anda dapat memberikan salah satu perintah geo berikut segera setelah perangkat virtual berjalan. Emulator menetapkan lokasi yang Anda masukkan dengan membuat penyedia lokasi palsu. Penyedia ini merespons pemroses lokasi yang ditetapkan oleh aplikasi dan menyediakan lokasi ke LocationManager. Aplikasi apa pun dapat meminta pengelola lokasi untuk mendapatkan perbaikan GPS terkini untuk perangkat yang diemulasi dengan memanggil LocationManager.getLastKnownLocation("gps").

  • geo fix longitude latitude [altitude] [satellites] [velocity]: Mengirim perbaikan GPS sederhana ke emulator. Tentukan bujur dan lintang dalam derajat desimal. Gunakan angka dari 1 hingga 12 untuk menentukan jumlah satelit yang akan digunakan untuk menentukan posisi, dan tentukan ketinggian dalam meter dan kecepatan dalam knot.

  • geo nmea sentence: Mengirim kalimat NMEA 0183 ke perangkat yang diemulasikan seolah-olah dikirim dari modem GPS yang diemulasikan. Mulai kalimat dengan '$GP'. Saat ini, hanya kalimat '$GPGGA' dan '$GPRCM' yang didukung. Contoh berikut adalah kalimat GPGGA (Global Positioning System Fix Data) yang mendapatkan waktu, posisi, dan memperbaiki data untuk penerima GPS:

    geo nmea $GPGGA,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx
    

Peristiwa hardware palsu

Subsistem peristiwa hardware konsol emulator memungkinkan Anda menyimulasikan hampir semua interaksi fisik dengan perangkat. Hal ini mencakup tombol fisik, sentuhan/gestur layar, tombol putar, input joystick, dan tombol hardware.

  • jenis peristiwa: Mencantumkan semua jenis peristiwa palsu. Untuk acara yang memiliki kode, jumlah kode tercantum dalam tanda kurung di sebelah kanan. Contoh output:

    event types
    event <type> can be an integer or one of the following aliases:
        EV_SYN
        EV_KEY    (405 code aliases)
        EV_REL    (2 code aliases)
        EV_ABS    (27 code aliases)
        EV_MSC
        EV_SW     (4 code aliases)
        EV_LED
        EV_SND
        EV_REP
        EV_FF
        EV_PWR
        EV_FF_STATUS
        EV_MAX
    OK
    
  • event send types [types ...]: Mengirim satu atau beberapa jenis peristiwa palsu.

  • jenis kode acara: Mencantumkan kode acara untuk jenis peristiwa palsu yang ditentukan.

  • event send type[:code]:[value] [...]: Mengirim satu atau beberapa peristiwa palsu dengan kode opsional dan nilai kode.

EV_KEY — Referensi Kode Kunci

Jenis peristiwa EV_KEY digunakan untuk menyimulasikan penekanan dan pelepasan tombol. Tabel berikut membagi daftar besar kode tombol yang didukung ke dalam kategori logis. Untuk setiap kode tombol, pengiriman nilai 1 akan menyimulasikan penekanan, sedangkan nilai 0 akan menyimulasikan pelepasan. Nilai 2 merepresentasikan pengulangan tombol.

Subtabel A: Kunci Sistem Android
Kode Deskripsi
KEY_HOME Pemicu tombol layar utama
KEY_BACK Pemicu tombol kembali
KEY_MENU Tombol menu (tambahan)
KEY_POWER Tombol daya (tekan/tekan lama)
KEY_VOLUMEUP Pemicu tombol Naikkan Volume
KEY_VOLUMEDOWN Pemicu tombol Turunkan Volume
KEY_CAMERA Tombol shutter Kamera fisik
KEY_FOCUS Shutter fokus otomatis kamera
KEY_SEARCH Pemicu tombol penelusuran
KEY_SLEEP Pemicu perintah tidur
KEY_WAKEUP Pemicu perintah aktif
KEY_NOTIFICATION Buka panel notifikasi
KEY_MUTE Membisukan output audio sistem
KEY_MICMUTE Membisukan input mikrofon
KEY_BRIGHTNESSDOWN Menurunkan kecerahan layar
KEY_BRIGHTNESSUP Meningkatkan kecerahan layar
KEY_PHONE Membuka aplikasi telepon default
KEY_SEND Mengirim atau memulai panggilan telepon
KEY_HEADSETHOOK Tombol headset (jawab/tutup telepon)
KEY_SCREEN Perintah aktif screensaver
KEY_CONFIG Menu sistem konfigurasi
KEY_SWITCHVIDEOMODE Mengalihkan mode video sistem
KEY_KBDILLUMTOGGLE Mengaktifkan/menonaktifkan lampu latar keyboard
Subtabel B: Kontrol Media & Pemutaran
Kode Deskripsi
KEY_PLAYPAUSE Mengalihkan status putar dan jeda
KEY_PLAY Mulai pemutaran media
KEY_PAUSECD Menjeda pemutaran CD
KEY_STOPCD Menghentikan pemutaran CD
KEY_NEXTSONG Lewati ke lagu berikutnya
KEY_PREVIOUSSONG Lewati ke lagu sebelumnya
KEY_REWIND Memundurkan jalur aktif
KEY_FASTFORWARD Mempercepat trek aktif
KEY_RECORD Perintah pemicu perekaman
KEY_SHUFFLE Mengaktifkan/menonaktifkan pemutaran acak
KEY_REPEAT Mengaktifkan/menonaktifkan pemutaran berulang
KEY_MEDIA Pemicu tombol media
Subtabel C: Navigasi & Keyboard Umum
Kode Deskripsi
KEY_UP Arah D-pad Atas
KEY_DOWN Arah D-pad Bawah
KEY_LEFT Arah D-pad Kiri
KEY_RIGHT Arah D-pad Kanan
KEY_PAGEUP Navigasi Page up
KEY_PAGEDOWN Navigasi turun halaman
KEY_INSERT Menyisipkan pemicu utama
KEY_DELETE Pemicu hapus kunci
KEY_ENTER Pemicu tombol enter
KEY_ESC Pemicu tombol keluar
KEY_TAB Pemicu tombol tab
KEY_SPACE Pemicu tombol spasi
KEY_BACKSPACE Pemicu tombol backspace
KEY_CLEAR Hapus buffer input
KEY_CANCEL Membatalkan tindakan aktif
KEY_OK Konfirmasi/OKE pilihan
KEY_SELECT Pemicu pilih item
KEY_GOTO Pergi ke tempat yang ditentukan
KEY_HELP Mengakses konteks bantuan
Subtabel D: Alfanumerik & Simbol Keypad
  • Huruf Alfabet Standar: KEY_A hingga KEY_Z (26 kode).
  • Tombol keypad angka: KEY_1 hingga KEY_0 (10 kode).
Kode Simbol Karakter
KEY_COMMA ,
KEY_DOT .
KEY_SLASH /
KEY_SEMICOLON ;
KEY_APOSTROPHE '
KEY_GRAVE \`
KEY_MINUS -
KEY_EQUAL =
KEY_LEFTBRACE [
KEY_RIGHTBRACE ]
KEY_BACKSLASH \
KEY_KPASTERISK * (Keypad numerik)
KEY_KPPLUS + (Keypad numerik)
KEY_KPMINUS - (Keypad numerik)
KEY_KPDOT . (Keypad numerik)
KEY_KPSLASH / (Keypad numerik)
KEY_KPENTER Enter (Keypad numerik)
KEY_KPEQUAL = (Keypad numerik)
KEY_KPCOMMA , (Keypad numerik)
KEY_KPJPCOMMA , (tata letak Jepang)
KEY_KPLEFTPAREN ( (Keypad numerik)
KEY_KPRIGHTPAREN ) (Keypad numerik)
KEY_KPPLUSMINUS ± (Keypad numerik)
Subtabel E: Tombol Pengubah & Fungsi
  • Tombol Fungsi Standar: KEY_F1 hingga KEY_F24 (24 kode).
Kode Deskripsi
KEY_LEFTSHIFT Pengubah keyboard Shift Kiri
KEY_RIGHTSHIFT Pengubah keyboard Shift Kanan
KEY_LEFTCTRL Pengubah keyboard Kontrol Kiri
KEY_RIGHTCTRL Pengubah keyboard Kontrol Kanan
KEY_LEFTALT Pengubah keyboard Alt Kiri
KEY_RIGHTALT Pengubah keyboard Alt Kanan
KEY_LEFTMETA Tombol Meta/Command kiri
KEY_RIGHTMETA Tombol Meta/Command Kanan
KEY_CAPSLOCK Tombol keyboard Caps Lock
KEY_NUMLOCK Tombol keyboard Num Lock
KEY_SCROLLLOCK Tombol keyboard Scroll Lock
KEY_COMPOSE Helper karakter Compose
KEY_FN Tombol FN keyboard fisik
KEY_FN_ESC Kombinasi tombol fungsi
KEY_FN_1 Pintasan fungsi khusus 1
KEY_FN_2 Pintasan fungsi khusus 2
KEY_FN_D Pintasan fungsi khusus D
KEY_FN_E Pintasan fungsi khusus E
KEY_FN_F Pintasan fungsi khusus F
KEY_FN_S Pintasan fungsi khusus S
KEY_FN_B Pintasan fungsi khusus B
Subtabel F: Gamepad & Joystick
Kode Deskripsi
BTN_A/BTN_B/BTN_C Tombol muka pengontrol A/B/C
BTN_X/BTN_Y/BTN_Z Tombol muka pengontrol X/Y/Z
BTN_START Tombol menu Mulai Gamepad
BTN_SELECT Tombol Pilih Gamepad
BTN_MODE Tombol Mode Pengontrol
BTN_TL/BTN_TR Tombol bahu Kiri / Kanan
BTN_TL2/BTN_TR2 Pemicu analog Kiri / Kanan
BTN_THUMBL/BTN_THUMBR Klik stik Kiri / Kanan
BTN_DPAD_UP Pemicu D-pad Atas Gamepad
BTN_DPAD_DOWN Pemicu D-pad Bawah Gamepad
BTN_DPAD_LEFT Pemicu Kiri D-pad Gamepad
BTN_DPAD_RIGHT Pemicu Kanan D-pad Gamepad
BTN_THUMB Pemicu ibu jari utama joystick
BTN_TOP/BTN_TOP2 Tombol atas joystick
BTN_PINKIE Pemicu tombol kelingking joystick
BTN_BASE ke _BASE6 Tombol dasar platform joystick
BTN_DEAD Flag zona mati gamepad tidak aktif
BTN_TRIGGER Pemicu tangan joystick fisik
BTN_JOYSTICK Kode input joystick generik
Subtabel G: Input Mouse, Sentuh & Stilus
Kode Deskripsi
BTN_MOUSE Peristiwa kursor mouse generik
BTN_LEFT Klik tombol kiri mouse
BTN_RIGHT Klik tombol kanan mouse
BTN_MIDDLE Klik roda scroll tengah
BTN_SIDE Pemicu tombol samping navigasi
BTN_EXTRA Pemicu tombol mouse tambahan
BTN_FORWARD Klik navigasi browser maju
BTN_BACK Klik navigasi browser kembali
BTN_TASK Tombol pengalih tugas sistem
BTN_TOUCH Kontak fisik layar terdeteksi
BTN_STYLUS Kedekatan pena stilus aktif
BTN_STYLUS2 Tombol barel sekunder pada stilus
BTN_TOOL_PEN ID alat pena stilus
BTN_TOOL_RUBBER ID alat penghapus stilus
BTN_TOOL_BRUSH ID alat kuas pelukis
BTN_TOOL_PENCIL ID alat pensil draf
BTN_TOOL_AIRBRUSH ID alat cat airbrush
BTN_TOOL_FINGER Kontak jari layar sentuh
BTN_TOOL_MOUSE ID alat mouse eksternal
BTN_TOOL_LENS Alat lensa pembesar optik
BTN_TOOL_DOUBLETAP Flag kecepatan ketuk dua kali gestur
BTN_TOOL_TRIPLETAP Flag kecepatan ketuk tiga kali gestur
Subtabel H: Pintasan Aplikasi
Kode Tindakan Target
KEY_WWW Meluncurkan browser web default
KEY_MAIL Membuka program email default
KEY_BOOKMARKS Membuka daftar bookmark browser
KEY_CALC Membuka utilitas kalkulator
KEY_FILE Membuka penjelajah file lokal
KEY_EDIT Pemicu pengeditan dokumen
KEY_NEW Pemicu baru pembuatan dokumen
KEY_OPEN Pemicu pembukaan dokumen
KEY_SAVE Pemicu tugas penyimpanan file
KEY_CLOSE Pemicu tugas tutup file
KEY_PRINT Pemicu tugas pencetakan file
KEY_COPY Tindakan penyalinan buffer papan klip
KEY_PASTE Tindakan penyisipan buffer papan klip
KEY_CUT Tindakan potong buffer papan klip
KEY_UNDO Tindakan urungkan buffer papan klip
KEY_REDO Tindakan ulangi buffer papan klip
KEY_CANCEL Memicu proses pembatalan buffer
KEY_FIND Utilitas penelusuran dokumen
KEY_REFRESH Utilitas pemuatan ulang dokumen
KEY_EXIT Utilitas penutup dokumen
KEY_DOCUMENTS Meluncurkan portal dokumen sistem
KEY_HOMEPAGE Meluncurkan browser halaman beranda
KEY_FAVORITES Membuka portal favorit browser
KEY_CHAT Meluncurkan instant messenger
KEY_EMAIL Pemicu peluncuran email alternatif
KEY_FINANCE Membuka utilitas saham/keuangan
KEY_SPORT Membuka utilitas pelacakan olahraga
KEY_SHOP Membuka portal belanja digital
KEY_PLAYER Membuka pemutar media utama
KEY_MP3 Buka pemutar MP3 utama
KEY_TEXT Membuka editor teks default
KEY_LIST Membuka utilitas checklist
KEY_MEMO Membuka utilitas notepad / memo
KEY_CALENDAR Membuka portal kalender / agenda
KEY_DIRECTORY Membuka direktori alamat sistem
KEY_COMPUTER Membuka penjelajah spesifikasi
KEY_TV/KEY_TV2 Meluncurkan portal televisi
KEY_RADIO Meluncurkan utilitas radio
KEY_CD/KEY_DVD Mengaktifkan pembaca drive optik
KEY_AUDIO/KEY_VIDEO Mengakses spesifikasi media
KEY_TUNER Mengonfigurasi penerima/penala
KEY_SAT/KEY_SAT2 Mengonfigurasi feed satelit
KEY_TAPE Putar deck media kaset
KEY_VCR Memutar feed pemutar VCR
KEY_VCR2 Memutar feed pemain VCR 2
KEY_AUX Input port media tambahan
KEY_SETUP Menu konfigurasi penyiapan
KEY_PROG1 ke _PROG4 Kunci program yang ditentukan pengguna
KEY_ZOOM Tombol alih zoom area pandang
KEY_MODE Pilihan mode area pandang
KEY_KEYBOARD Menampilkan/menyembunyikan keyboard virtual
KEY_LANGUAGE Mengubah bahasa trek audio
KEY_TITLE Membuka opsi judul media
KEY_SUBTITLE Mengaktifkan/menonaktifkan antarmuka subtitel
KEY_ANGLE Mengubah sudut kamera video
KEY_EPG Membuka panduan program elektronik
KEY_PVR Membuka perekam video pribadi
KEY_MHP Platform rumah multimedia terbuka
KEY_CHANNEL Membuka saluran tuner TV
KEY_CHANNELUP Menyesuaikan saluran TV ke atas
KEY_CHANNELDOWN Menyesuaikan saluran TV ke bawah
KEY_RED Tombol interaktif merah
KEY_GREEN Tombol interaktif hijau
KEY_YELLOW Tombol interaktif kuning
KEY_BLUE Tombol interaktif biru
KEY_FIRST Pilih opsi item pertama
KEY_LAST Pilih opsi item terakhir
KEY_NEXT Pilih opsi trek berikutnya
KEY_PREVIOUS Pilih opsi trek sebelumnya
KEY_RESTART Memulai ulang loop trek media
KEY_SLOW Opsi pemutaran gerak lambat
KEY_AB Loop urutan pengulangan A-B
KEY_PLAYCD Perintah putar deck CD
KEY_PAUSECD Perintah jeda deck CD
KEY_STOPCD Perintah berhenti CD deck
KEY_DIGITS Perintah entri keypad digital
KEY_TEEN Opsi nilai remaja keypad
KEY_TWEN Opsi nilai twen keypad
KEY_DEL_EOL Menghapus ke akhir buffer baris
KEY_DEL_EOS Menghapus hingga akhir buffer layar
KEY_INS_LINE Menyisipkan buffer baris baru
KEY_BRL_DOT1 ke _DOT8 Input tombol penampil braille
KEY_VOICECOMMAND Meluncurkan aplikasi asisten suara
KEY_SELECTIVE_SCREEN Memicu pengambilan cuplikan layar regional
KEY_BATTERY Mengirim kueri notifikasi baterai
KEY_STAR/KEY_SHARP Simbol keypad telepon
KEY_PLUS Keypad telepon dan simbol plus
KEY_INFO Menampilkan overlay panel info
KEY_TIME Menampilkan waktu jam saat ini
KEY_VENDOR Mengueri spesifikasi vendor
KEY_ARCHIVE Membuka utilitas arsip lokal
KEY_PROGRAM Mengonfigurasi parameter program
KEY_POWER2 Memicu daya cadangan alternatif

EV_ABS — Peristiwa Gerakan Absolut

Jenis peristiwa EV_ABS sangat penting untuk menyimulasikan sentuhan yang presisi, gestur tarik lalu lepas, tindakan mencubit multi-sentuh, dan penyesuaian joystick. Koordinat absolut di bawah dipetakan langsung ke resolusi layar fisik yang mendasarinya.

Kode Rentang Koordinat Deskripsi
ABS_MT_TRACKING_ID -1 atau ≥0 ID Pelacakan; -1 mengakhiri sentuhan
ABS_MT_POSITION_X 0 ke 1767 Koordinat X (Pixel Fold)
ABS_MT_POSITION_Y 0 ke 2207 Koordinat Y (Pixel Fold)
ABS_MT_TOUCH_MAJOR piksel Lebar sumbu utama area sentuh
ABS_MT_TOUCH_MINOR piksel Lebar sumbu kecil area sentuh
ABS_MT_WIDTH_MAJOR piksel Lebar sumbu utama alat
ABS_MT_WIDTH_MINOR piksel Lebar sumbu kecil alat
ABS_MT_ORIENTATION 0 ke 255 Sudut orientasi kontak
ABS_MT_PRESSURE 0 ke 255 Besar gaya kontak
ABS_MT_DISTANCE mm Jarak mengambang dari layar
ABS_MT_TOOL_TYPE 0 ke 2 0=jari, 1=pena, 2=pensil
ABS_MT_BLOB_ID bilangan bulat ID blob kontak
ABS_MT_TOOL_X piksel Koordinat posisi X alat
ABS_MT_TOOL_Y piksel Koordinat posisi Y alat
ABS_MT_SLOT 0 ke N Slot aktif (Protokol B)
ABS_X/_Y/_Z analog Sumbu koordinat joystick
ABS_RX/_RY/_RZ analog Sumbu rotasi joystick
ABS_THROTTLE/_BRAKE analog Kontrol pedal dan kemudi
ABS_HAT0X/_HAT0Y -1/0/1 Topi D-pad & sakelar POV
ABS_PRESSURE 0 ke 255 Tingkat tekanan stilus / kursor
ABS_DISTANCE mm Jarak kursor (pena stilus)
ABS_TILT_X/_TILT_Y derajat Sudut kemiringan stilus
ABS_VOLUME analog Tingkat volume pengontrol

Interaksi sentuh Android didorong oleh Protokol Multi-sentuh (MT). Emulator modern menerapkan Protocol A (stateless, mengirim paket kontak yang dipisahkan oleh tanda sinkronisasi) dan Protocol B (stateful, menetapkan kontak ke slot pelacakan khusus). Protocol B memungkinkan pelacakan yang efisien untuk beberapa sentuhan serentak untuk gestur seperti mencubit untuk memperbesar.

EV_REL & EV_SW — Gerakan & Tombol Hardware

Kategori peristiwa EV_REL mengelola perubahan pointer atau koordinat relatif, yang terutama digunakan untuk meniru gerakan mouse eksternal atau roda scrolling. Kategori peristiwa EV_SW mengelola tombol akses perangkat fisik, seperti apakah ponsel flip atau tablet dilipat, atau apakah hardware audio eksternal dimasukkan.

Kode Nilai Deskripsi
REL_X Delta Gerakan kursor horizontal
REL_Y Delta Gerakan kursor vertikal
SW_LID 0/1 Status tutup laptop (0=Terbuka, 1=Tertutup)
SW_TABLET_MODE 0/1 Status mode tablet (0=Nonaktif, 1=Aktif)
SW_HEADPHONE_INSERT 0/1 Status colokan headphone (0=Keluar, 1=Masuk)
SW_MICROPHONE_INSERT 0/1 Status colokan mikrofon (0=Keluar, 1=Masuk)
Sintaksis Pengiriman Perintah

Untuk mengirimkan kode ini, format perintah konsol dengan jenis, kode, dan nilai yang dipisahkan oleh titik dua. Anda dapat mengantrekan beberapa perubahan koordinat dalam satu string. Yang penting, selalu tambahkan tanda sinkronisasi akhir (EV_SYN:0:0) untuk menunjukkan bahwa framework emulator harus memaketkan dan memproses input ini bersama-sama.

Contoh Skrip Peristiwa & Gestur

Karena Telnet memungkinkan pengiriman parameter multi-bagian, Anda dapat menyimulasikan urutan gestur fisik yang realistis. Berikut adalah struktur skrip peristiwa mentah untuk mengotomatiskan gestur dari konsol host Anda.

Menyimulasikan Ketukan Layar

Untuk melakukan ketukan layar bersih pada koordinat target, tetapkan ID pelacakan, tentukan koordinat X dan Y di layar, simulasikan sentuhan kontak, sinkronkan, lalu lepaskan.

# Press down at coordinate (400, 800) and sync
event send EV_ABS:ABS_MT_TRACKING_ID:1
OK
event send EV_ABS:ABS_MT_POSITION_X:400
OK
event send EV_ABS:ABS_MT_POSITION_Y:800
OK
event send EV_KEY:BTN_TOUCH:1
OK
event send EV_SYN:0:0
OK
# Lift finger up and sync
event send EV_ABS:ABS_MT_TRACKING_ID:-1
OK
event send EV_KEY:BTN_TOUCH:0
OK
event send EV_SYN:0:0
OK
Menyimulasikan Scroll Vertikal (Geser)

Untuk menjalankan gestur geser scroll, tahan sentuhan pada koordinat awal, kirim frame koordinat gerakan perantara, dan lepaskan di akhir.

# Finger touch down at start coordinate (500, 1600)
event send EV_ABS:ABS_MT_TRACKING_ID:2
OK
event send EV_ABS:ABS_MT_POSITION_X:500
OK
event send EV_ABS:ABS_MT_POSITION_Y:1600
OK
event send EV_KEY:BTN_TOUCH:1
OK
event send EV_SYN:0:0
OK
# Move coordinates upward dynamically
event send EV_ABS:ABS_MT_POSITION_Y:1200
OK
event send EV_SYN:0:0
OK
event send EV_ABS:ABS_MT_POSITION_Y:800
OK
event send EV_SYN:0:0
OK
event send EV_ABS:ABS_MT_POSITION_Y:400
OK
event send EV_SYN:0:0
OK
# Finger release at coordinate (500, 400)
event send EV_ABS:ABS_MT_TRACKING_ID:-1
OK
event send EV_KEY:BTN_TOUCH:0
OK
event send EV_SYN:0:0
OK
Menyimulasikan Gestur Cubit untuk Zoom

Untuk memicu zoom dua jari, gunakan slot MT aktif (0 dan 1) untuk melacak dan mengoordinasikan dua koordinat sentuhan serentak yang bergerak menjauhi satu sama lain.

# Finger 1 down at (500, 1000) using slot 0
event send EV_ABS:ABS_MT_SLOT:0
OK
event send EV_ABS:ABS_MT_TRACKING_ID:10
OK
event send EV_ABS:ABS_MT_POSITION_X:500
OK
event send EV_ABS:ABS_MT_POSITION_Y:1000
OK
event send EV_KEY:BTN_TOUCH:1
OK
event send EV_SYN:0:0
OK
# Finger 2 down at (600, 1000) using slot 1
event send EV_ABS:ABS_MT_SLOT:1
OK
event send EV_ABS:ABS_MT_TRACKING_ID:11
OK
event send EV_ABS:ABS_MT_POSITION_X:600
OK
event send EV_ABS:ABS_MT_POSITION_Y:1000
OK
event send EV_SYN:0:0
OK
# Fingers slide apart from each other
event send EV_ABS:ABS_MT_SLOT:0
OK
event send EV_ABS:ABS_MT_POSITION_X:300
OK
event send EV_SYN:0:0
OK
event send EV_ABS:ABS_MT_SLOT:1
OK
event send EV_ABS:ABS_MT_POSITION_X:800
OK
event send EV_SYN:0:0
OK
# Lift Finger 1 using slot 0
event send EV_ABS:ABS_MT_SLOT:0
OK
event send EV_ABS:ABS_MT_TRACKING_ID:-1
OK
event send EV_SYN:0:0
OK
# Lift Finger 2 using slot 1
event send EV_ABS:ABS_MT_SLOT:1
OK
event send EV_ABS:ABS_MT_TRACKING_ID:-1
OK
event send EV_KEY:BTN_TOUCH:0
OK
event send EV_SYN:0:0
OK
Menyimulasikan Peralihan Koneksi Headphone

Mensimulasikan penyisipan atau pelepasan colokan headphone untuk menguji pengalihan perutean audio. Nilai 1 menunjukkan penyisipan jack, dan 0 adalah pelepasan headphone.

# Simulate headphones plugged in
event send EV_SW:SW_HEADPHONE_INSERT:1 EV_SYN:0:0
OK
# Simulate headphones unplugged
event send EV_SW:SW_HEADPHONE_INSERT:0 EV_SYN:0:0
OK
Menemukan Kode Acara Konsol dari Perangkat Asli

Untuk menemukan urutan sintaksis peristiwa yang tepat untuk gestur tombol atau tindakan kustom apa pun, hubungkan melalui adb shell dan jalankan utilitas diagnostik getevent. Saat Anda berinteraksi dengan GUI emulator, konsol akan mencetak kode, jenis, dan posisi peristiwa yang tepat.

# Run getevent to monitor input events dynamically
adb shell getevent -lt
/dev/input/event12: EV_KEY       KEY_POWER            DOWN
/dev/input/event12: EV_SYN       SYN_REPORT           00000000
/dev/input/event12: EV_KEY       KEY_POWER            UP
/dev/input/event12: EV_SYN       SYN_REPORT           00000000
  • pesan teks acara: Mengirim string karakter yang melakukan simulasi penekanan tombol. Pesan harus berupa string UTF-8. Postingan Unicode dipetakan terbalik sesuai dengan keyboard perangkat saat ini, dan karakter yang tidak didukung akan dibuang tanpa pemberitahuan.

Kontrol status daya

  • tampilan daya: Menampilkan status baterai dan pengisi daya.

  • power ac {on| off}: Menyetel status pengisian daya AC menjadi aktif atau nonaktif.

  • status daya {tidak diketahui| mengisi daya| mengosongkan daya| tidak mengisi daya| penuh}: Mengubah status baterai seperti yang ditentukan.

  • power present {true| false}: Menyetel status keberadaan baterai.

  • power health {unknown| good| overheat| dead| overvoltage| failure}: Menetapkan status kesehatan baterai.

  • power capacity percent: Menyetel status kapasitas baterai yang tersisa dalam persen dari 0 hingga 100.

Status koneksi jaringan (khusus Ethernet dan Seluler)

  • status jaringan: Memeriksa status jaringan serta karakteristik kecepatan dan waktu tunda saat ini.

  • network delay latency Mengubah latensi jaringan yang diemulasikan.

    Dengan adanya emulator, Anda dapat melakukan simulasi berbagai tingkat latensi jaringan sehingga dapat menguji aplikasi di lingkungan yang lebih khas dari kondisi berjalan yang sebenarnya. Anda dapat menyetel tingkat atau rentang latensi saat memulai emulator, atau menggunakan konsol untuk mengubah latensi saat aplikasi berjalan di emulator.

    Format latensi jaringan adalah salah satu dari berikut ini (angkanya dalam milidetik):

    Format latensi jaringan:

  • gprs: GPRS, yang menggunakan rentang latensi minimum sebesar 150 dan maksimum sebesar 550.

  • edge: EDGE/EGPRS, yang menggunakan rentang latensi minimum 80 dan maksimum 400.

  • umts: UMTS/3G, yang menggunakan rentang latensi minimum 35 dan maksimum 200.

  • none: Tidak ada latensi.

  • num: Mengemulasikan latensi yang ditentukan dalam milidetik.

  • min:max: Mengemulasikan rentang latensi yang ditentukan.

    Untuk menyetel latensi saat memulai emulator, gunakan opsi emulator -netdelay dengan nilai latensi yang didukung. Contoh:

    emulator -netdelay gprs
    emulator -netdelay 40,100
    

    Untuk mengubah penundaan jaringan saat emulator sedang berjalan, sambungkan ke konsol dan gunakan perintah network delay:

    network delay gprs
    network delay 40 100
    
  • network speed speed Emulator memungkinkan Anda melakukan simulasi berbagai laju transfer jaringan. Anda dapat menyetel laju atau rentang transfer saat memulai emulator, atau menggunakan konsol untuk mengubah laju saat aplikasi berjalan di emulator.

    Format kecepatan jaringan adalah salah satu dari berikut ini (angkanya dalam kilobit/detik):

    Format kecepatan jaringan:

  • gsm: GSM/CSD, yang menggunakan kecepatan 14,4 ke atas dan 14,4 ke bawah.

  • hscsd: HSCSD, yang menggunakan kecepatan 14,4 ke atas dan 43,2 ke bawah.

  • gprs: GPRS, yang menggunakan kecepatan 40,0 ke atas dan 80,0 ke bawah.

  • edge: EDGE/EGPRS, yang menggunakan kecepatan 118,4 ke atas dan 236,8 ke bawah.

  • umts: UMTS/3G, yang menggunakan kecepatan 128,0 ke atas dan 1920 ke bawah.

  • hsdpa: HSDPA, yang menggunakan kecepatan upload 348,0 dan download 14.400,0.

  • lte: LTE, yang menggunakan kecepatan 58.000 ke atas dan 173.000 ke bawah.

  • evdo: EVDO, yang menggunakan kecepatan 75.000 ke atas dan 280.000 ke bawah.

  • full: Kecepatan tidak terbatas, tetapi bergantung pada kecepatan koneksi jaringan komputer Anda.

  • num: Menyetel laju yang tepat dalam kilobit/detik yang digunakan untuk mengupload dan mendownload.

  • up:down: Menyetel laju yang tepat dalam kilobit/detik untuk mengupload dan mendownload secara terpisah.

    Untuk menyetel kecepatan jaringan saat emulator dimulai, gunakan opsi emulator -netspeed. Contoh:

    emulator -netspeed gsm @Pixel_API_26
    emulator -netspeed 14.4,80 @Pixel_API_26
    

    Untuk mengubah kecepatan jaringan saat emulator sedang berjalan, sambungkan ke konsol dan gunakan perintah network speed:

    network speed 14.4 80
    
  • network capture {start| stop} file Mengirim paket ke file. Daftar berikut ini mendeskripsikan parameter dan nilai parameter:

    Catatan: Mulai Android Emulator 36.5 dan yang lebih baru, traffic koneksi Wi-Fi ditangani oleh netsim secara default. Perintah konsol pengambilan jaringan hanya merekam traffic seluler/WAN lama yang dirutekan melalui stack slirp QEMU. Untuk merekam paket jaringan Wi-Fi, Bluetooth, atau lanjutan di versi emulator modern, lihat Merekam traffic jaringan di panduan Jaringan Emulator Lanjutan.

  • start file: Mulai merekam paket jaringan. Untuk keamanan, file harus berupa nama file kosong (tanpa pemisah jalur seperti /, dan tanpa ..). File rekaman aktivitas paket akan disimpan di direktori konten AVD Anda dalam folder console_out/ (misalnya, ~/.android/avd/avd_name.avd/console_out/file).

  • stop file: Berhenti mengirim paket ke file yang ditentukan.

Emulasi telepon

Emulator Android menyertakan modem emulasi GSM dan CDMA sendiri yang memungkinkan Anda melakukan simulasi fungsi telepon di emulator. Misalnya, dengan GSM Anda dapat melakukan simulasi panggilan telepon masuk serta membuat dan mengakhiri koneksi data. Dengan CDMA, Anda dapat menyediakan sumber langganan dan preferred roaming list. Sistem Android akan menangani panggilan simulasi persis seperti panggilan sebenarnya. Emulator tidak mendukung audio panggilan.

  • gsm {call| accept| cancel| busy} phonenumber Parameter gsm adalah sebagai berikut:

    • call: Menyimulasikan panggilan telepon masuk dari phonenumber.
    • accept: Menerima panggilan masuk dari phonenumber dan mengubah status panggilan menjadi aktif. Anda dapat mengubah status panggilan menjadi aktif hanya jika status saat ini adalah menunggu atau ditahan.
    • cancel: Mengakhiri panggilan telepon masuk dari atau panggilan telepon keluar ke phonenumber.
    • busy: Menutup panggilan keluar ke phonenumber dan mengubah status panggilan menjadi sibuk. Anda dapat mengubah status panggilan menjadi sibuk hanya jika status saat ini adalah menunggu.
  • gsm {data| voice} state Perintah status data mengubah status koneksi data GPRS, dan perintah status suara mengubah status koneksi suara GPRS, sebagai berikut:

    • unregistered: Jaringan tidak tersedia.
    • home: Di jaringan lokal, non-roaming.
    • roaming: Di jaringan roaming.
    • searching: Mencari jaringan.
    • denied: Panggilan darurat saja.
    • off: Sama seperti unregistered.
    • on: Sama seperti rumah.
  • gsm hold: Mengubah status panggilan menjadi ditahan. Anda dapat mengubah status panggilan menjadi ditahan hanya jika status saat ini adalah aktif atau menunggu.

  • gsm list: Mencantumkan semua panggilan masuk dan keluar beserta statusnya.

  • status gsm: Melaporkan status suara/data GSM saat ini. Nilai adalah yang dijelaskan untuk perintah suara dan data.

  • gsm signal {rssi| ber} Mengubah kekuatan sinyal yang dilaporkan (rssi) dan bit error rate (ber) pada 15 detik update berikutnya. Daftar berikut ini menjelaskan parameter dan nilainya:

    • rssi: rentangnya adalah 0 hingga 31 dan 99 untuk yang tidak diketahui.
    • ber: rentangnya adalah 0 hingga 7 dan 99 untuk yang tidak diketahui.
  • gsm signal-profile num: Menyetel profil kekuatan sinyal. num adalah angka dari 0 hingga 4.

  • cdma ssource source Menyetel sumber langganan CDMA saat ini, dengan source adalah daftar berbasis jaringan yang diizinkan dan berisi pelanggan operator CDMA beserta nilainya, sebagai berikut:

    • nv: Membaca langganan dari RAM non-volatile.
    • ruim: Membaca langganan dari Removable User Identity Module (RUIM).
  • cdma prl_version version: Membuang versi preferred roaming list (PRL) saat ini. Nomor versi adalah untuk database PRL yang berisi informasi yang digunakan selama proses pemilihan dan akuisisi sistem.

Mengelola Sensor pada emulator

Perintah ini berkaitan dengan sensor yang tersedia di AVD. Selain menggunakan perintah sensor, Anda dapat melihat dan menyesuaikan setelan di emulator pada layar Virtual sensors di tab Accelerometer dan Additional sensors.

  • status sensor: Mencantumkan semua sensor dan statusnya.

  • sensor get sensor-name: Mendapatkan setelan untuk sensor-name. Contoh berikut adalah nilai untuk sensor akselerasi:

    sensor get acceleration
    acceleration = 2.23517e-07:9.77631:0.812348
    

    Nilai akselerasi yang dipisahkan oleh titik dua(:) merujuk pada koordinat x, y, dan z untuk sensor virtual.

  • sensor set sensor-name value-x:value-y:value-z: Menetapkan nilai untuk sensor-name. Contoh berikut menetapkan sensor akselerasi ke nilai x, y, dan z yang dipisahkan oleh titik dua.

    sensor set acceleration 2.23517e-07:9.77631:0.812348
    

Emulasi SMS

  • sms send sender-phone-number textmessage Menghasilkan SMS masuk yang diemulasi. Daftar berikut ini menjelaskan parameter dan nilainya:

    • sender-phone-number: Berisi string numerik yang berubah-ubah.
    • textmessage: Pesan sms.

    Contoh berikut mengirim pesan "hi there" ke nomor telepon 4085555555:

    sms send 4085555555 hi there
    

Konsol akan meneruskan pesan SMS ke framework Android, yang akan diteruskan ke aplikasi pada emulator yang menangani SMS, seperti aplikasi Pesan. Jika Anda memasukkan 10 angka, aplikasi akan memformatnya sebagai nomor telepon. String numerik yang lebih panjang atau lebih pendek akan menampilkan cara Anda mengirimnya.

Simulasi sidik jari

  • sentuhan jari fingerprint-id: Menyimulasikan jari yang menyentuh sensor.

  • finger remove: Menyimulasikan pelepasan jari dari sensor.

Untuk mengetahui petunjuk tentang cara menggunakan perintah ini, lihat bagian berikut tentang simulasi dan validasi sidik jari.

Rekaman Layar

Perintah perekaman layar memungkinkan pengambilan file video berkualitas tinggi dari tampilan fisik emulator langsung dari sistem host. Hal ini sangat berguna untuk pipeline continuous integration dan pelaporan bug otomatis.

  • screenrecord {start| stop} file Memulai atau menghentikan proses perekaman layar.
    • start file: Memulai perekaman video. File output harus diakhiri dengan ekstensi .webm yang wajib ada. Video yang direkam disimpan langsung di bawah direktori output konsol AVD Anda: ~/.android/avd/avd_name.avd/console_out/file.
    • stop file: Menghentikan proses perekaman layar yang aktif.

Otomatisasi & Makro

Subsistem otomatisasi memungkinkan developer merekam transisi status makro pada perangkat virtual yang sedang berjalan dan memutarnya kembali untuk menjalankan alur pengujian otomatis.

  • automation {record| stop-record| play| stop-play} Mengelola rekaman makro otomatis.
    • record: Mulai merekam perubahan status dan input perangkat.
    • stop-record: Menghentikan sesi perekaman makro saat ini.
    • play: Mulai memutar kembali urutan makro yang direkam.
    • stop-play: Menghentikan urutan pemutaran makro yang aktif.

Fisika (6DoF)

Perintah fisika mengelola pencatatan pose spasial kebenaran dasar untuk model gerakan fisik enam derajat kebebasan (6DoF), yang digunakan untuk menyimulasikan pelacakan gerakan tingkat lanjut.

  • physics {record-gt| stop} Mengelola rekaman model pose fisik.
    • record-gt: Mulai merekam data pergerakan 6DoF kebenaran dasar.
    • stop: Menghentikan proses perekaman data sebenarnya saat ini.

Kontrol Perangkat Lanjutan

Bagian ini menggabungkan endpoint perintah konsol yang sangat khusus untuk konfigurasi emulasi lanjutan, termasuk proxy jaringan, konfigurasi multi-layar, penggantian rendering, dan debug langsung hypervisor.

  • multidisplay {add| del} Menambahkan atau menghapus monitor virtual sekunder untuk menguji konfigurasi multi-layar. Catatan: Monitor sekunder tidak didukung pada profil perangkat layar ganda seperti Pixel Fold atau emulator yang Dapat diubah ukurannya.

  • proxy {set| clear} Mengonfigurasi penerusan proxy jaringan secara terprogram dari konsol.

    • set host port: Mengonfigurasi setelan proxy target.
    • clear: Mereset konfigurasi proxy kembali ke default. Catatan: Operasi setelan proxy gagal di lingkungan eksekusi headless.
  • virtualscene-image {wall| table} image_path Menyesuaikan dinding latar belakang atau meja horizontal yang ditampilkan di feed kamera adegan virtual dengan file gambar pengguna kustom.

  • resize-display scale Menyesuaikan resolusi layar secara dinamis di antara skala preset. Catatan: Penyesuaian resolusi tidak didukung dalam konfigurasi tanpa tampilan.

  • nodraw {on| off} Menonaktifkan rendering GUI fisik di layar host untuk mengurangi memori sistem dan beban GPU selama menjalankan otomatisasi headless di latar belakang dalam volume tinggi.

  • grpc port Mengonfigurasi kontrol perangkat terprogram lanjutan melalui endpoint port gRPC kustom.

  • qemu monitor Memberikan akses terminal interaktif langsung ke konsol hypervisor yang mendasarinya. Perintah ini hanya dapat dimasukkan melalui sesi konsol Telnet yang aktif.

  • icebox track pid Mengaktifkan snapshot sistem otomatis saat proses aplikasi yang ditentukan mengalami pengecualian atau error yang tidak tertangani.

  • phonenumber number Menetapkan nomor telepon lokal virtual perangkat target.

Antarmuka terprogram gRPC

Versi emulator modern mendukung antarmuka terprogram gRPC yang canggih bersama dengan konsol Telnet lama. Meskipun konsol Telnet sangat cocok untuk sesi interaktif cepat atau pembuatan skrip sederhana, antarmuka gRPC dirancang untuk kontrol otomatis yang berperforma tinggi, aman, dan andal dalam integrasi berkelanjutan (CI) dan lingkungan tanpa tampilan. Dengan menawarkan endpoint layanan langsung, gRPC menghilangkan kebutuhan untuk mengurai aliran teks, mengelola handshake sesi terminal, atau mengekspos port localhost yang tidak dienkripsi.

Untuk membantu memilih antara konsol Telnet lama dan antarmuka gRPC terprogram modern, tinjau perbandingan performa, keamanan, dan kemampuan fitur berikut:

Fitur Konsol Telnet Antarmuka gRPC
Paling Cocok untuk Penelusuran bug manual, sesi interaktif. CI/CD headless, platform pengujian otomatis yang berat.
Kecepatan Lebih lambat; overhead teks, latensi koneksi. Dioptimalkan; HTTP/2 yang di-multiplex, proto cepat.
Keamanan Tidak dienkripsi; port lokal (5554–5585). Dapat diamankan dengan TLS, berfungsi melalui jaringan.
Streaming Tidak didukung; hanya permintaan-respons. Streaming untuk logcat, perekaman audio tamu.
Media Menulis file output ke disk host/tamu. Buffer biner langsung melalui kabel.
Guest OS Dibatasi untuk perintah emulator tetap. Menjalankan perintah shell bash tamu native.

Meluncurkan dan memanggil gRPC

Untuk menggunakan endpoint gRPC, luncurkan Android Emulator dari command line dan sertakan flag -grpc, yang menentukan port loopback target.

# Start the emulator with the gRPC service enabled on port 8556
emulator -grpc localhost:8556 @Pixel_Fold

Setelah emulator berjalan dengan layanan gRPC diaktifkan, Anda dapat melakukan panggilan RPC secara terprogram. Untuk pengujian command line, gunakan utilitas grpcurl untuk berkomunikasi dengan layanan emulator. Semua permintaan diformat dalam JSON dan dikirim melalui teks biasa.

# Query the status of the virtual device using grpcurl
grpcurl -plaintext -d '{}' localhost:8556 \
  android.emulation.control.EmulatorController/getStatus

# Simulate an incoming phone call
grpcurl -plaintext -d '{"operation": "InitCall", "number": "1234567890"}' localhost:8556 \
  android.emulation.control.EmulatorController/sendPhone

# Simulate typing text into the guest OS
grpcurl -plaintext -d '{"text": "Hello"}' localhost:8556 \
  android.emulation.control.EmulatorController/sendKey

Pemetaan konsol Telnet ke layanan gRPC

Tabel referensi berikut memetakan perintah konsol Telnet lama ke layanan dan metode gRPC yang sesuai, yang menunjukkan cara mengotomatiskan interaksi perangkat virtual umum secara terprogram:

Kategori Perintah Telnet Lama Layanan / Metode gRPC
Status ping EmulatorController/getStatus
Status avd name incubating.AvdService/getAvdInfo
Status kill EmulatorController/setVmState
Status restart EmulatorController/setVmState
Daya power display EmulatorController/getBattery
Daya power capacity EmulatorController/setBattery
Geo Loc geo fix EmulatorController/setGps
Sensor sensor set incubating.SensorService/setSensor
Biometrik finger touch EmulatorController/sendFingerprint
Postur posture EmulatorController/setPosture
Postur physics/fold EmulatorController/setPhysicalModel
SMS sms send EmulatorController/sendSms
Panggilan GSM gsm call EmulatorController/sendPhone
Panggilan GSM phonenumber EmulatorController/setPhoneNumber
Pengalihan redir add Waterfall/ForwardPort
Input event send EV_KEY EmulatorController/sendKey
Input event send EV_ABS EmulatorController/sendTouch
Media screenrecord incubating.ScreenRecording
Rendering nodraw EmulatorController/setDisplayMode
Snapshot avd snapshot list SnapshotService/ListSnapshots
Snapshot avd snapshot load/save SnapshotService/LoadSnapshot

Perintah terprogram yang unik untuk gRPC

Antarmuka gRPC menyediakan beberapa kemampuan canggih yang secara fisik tidak mungkin dieksekusi melalui koneksi konsol Telnet lama. Hal ini mencakup streaming logcat langsung, pengambilan atau injeksi audio dua arah, modifikasi GUI host, dan akses shell langsung.

Layanan / Metode gRPC Parameter Kemampuan
streamLogcat {"maxLines": 100} Output logcat sistem tamu Streams
streamAudio {} Mengalirkan audio speaker melalui kabel
injectAudio {"audio": "..."} Menyuntikkan aliran audio mikrofon
UiController {"theme": "DARK"} Mengubah tema jendela host
Waterfall/Exec {"cmd": "ls"} Menjalankan perintah shell OS tamu native

Simulasi dan validasi sidik jari

Gambar 1. Layar autentikasi sidik jari.

Gunakan perintah finger untuk menyimulasikan dan memvalidasi autentikasi sidik jari untuk aplikasi Anda. Anda memerlukan SDK Tools 24.3 atau yang lebih tinggi, dan Android 6.0 (level API 23) atau yang lebih tinggi.

Untuk menyimulasikan dan memvalidasi autentikasi sidik jari, ikuti langkah-langkah ini:

  1. Jika Anda belum memiliki ID sidik jari, daftarkan sidik jari baru di emulator dengan memilih Setelan > Keamanan > Sidik jari dan ikuti petunjuk pendaftaran.

  2. Siapkan aplikasi Anda untuk menerima autentikasi sidik jari. Setelah melakukan penyiapan ini, perangkat Anda akan menampilkan layar autentikasi sidik jari.

  3. Saat aplikasi menampilkan layar autentikasi sidik jari, buka konsol dan masukkan perintah finger touch serta ID sidik jari yang Anda buat. Aplikasi akan melakukan simulasi sentuhan jari.

  4. Kemudian, masukkan perintah finger remove untuk melakukan simulasi pelepasan jari dari sensor. Aplikasi Anda harus merespons seolah-olah pengguna menyentuh lalu melepaskan jarinya dari sensor sidik jari.