Halaman ini menjelaskan cara menjalankan Emulator AAOS sebagai Layanan Web dan menjalankannya di {i>browser <i}web untuk membuatnya dapat diakses dari jarak jauh oleh pengguna. Dengan melakukannya, Anda akan mendapatkan referensi minimal via Google Cloud Compute Engine. Meskipun demikian, Anda dapat menggunakan layanan ini di platform cloud publik atau pribadi pilihan Anda.
Tujuan
Konfigurasi dan pengaturan terpusat ini membuat Emulator AAOS dapat diakses oleh seluruh perusahaan, pemasok, dan pengembang yang bekerja dari rumah. Tindakan ini akan membuat pengelolaan dan upgrade menjadi lebih efisien Emulator AAOS ke versi baru dan menghemat waktu yang diperlukan untuk menyiapkan dan mengelola komputer lokal untuk pengguna individu. Solusi ini mengoptimalkan penggunaan sumber daya perangkat keras dan memungkinkan yang lebih rendah biaya untuk pengembangan aplikasi. Misalnya, untuk tujuan:
- Riset pengguna, ulasan pengalaman pengguna, dukungan pelanggan, dan pelatihan.
- Demo untuk calon pelanggan dan di saluran penjualan.
- Menguji, memvalidasi, dan bahkan men-debug aplikasi (termasuk build HMI OEM harian) dalam skala besar. Pertimbangkan Emulator sebagai pengganti bangku pengujian untuk mengembangkan aplikasi.
- Agen pusat panggilan pelanggan OEM memiliki UI HU yang seragam dan mudah diakses.
Manfaat menggunakan Emulator AAOS sangat banyak:
- Menggunakan skrip penyiapan untuk membuat Emulator AAOS berbasis cloud yang disesuaikan (emulator cloud).
- Bangun image AAOS Cloud Emulator yang disesuaikan untuk instance VM:
- Penyiapan emulator berbasis cloud sudah siap.
- Image AVD AAOS publik tersedia bagi pembuat layanan untuk memulai AVD AAOS dengan perintah. Misalnya, image AVD OEM publik sebagai contoh untuk diadaptasi dan diterapkan oleh partner.
Arsitektur
Arsitektur contoh emulator cloud diilustrasikan di bawah ini. Pertama Anda akan berfungsi minimal dengan menambahkan image AVD OEM Anda sendiri.
Gambar 1. Arsitektur Cloud AVD.
Elemen penyusun emulator utama adalah:
di sini.Item | Tujuan |
---|---|
Android Emulator | Instance emulator menghosting gambar AVD |
Jembatan ikan mas-webrtc | Aplikasi Linux untuk menyediakan komunikasi antara aplikasi reaksi dan Emulator AAOS |
android-emulator-webrtc | Aplikasi React untuk menampilkan UI Emulator di web browser. React juga menangkap peristiwa input pengguna dan mengirimkannya kembali ke server. |
Skrip Penampung Android Emulator | Skrip Python untuk mengelola dan membuat image serta container Docker untuk modul software di atas. |
Menghasilkan token untuk mengelola izin akses emulator. | |
Ubah server | Membuat koneksi langsung WebRTC antara klien dan server. Ubah server diperlukan hanya saat layanan Emulator berjalan di belakang firewall atau proxy. |
Envoy | Layanan proxy untuk:
|
Menyiapkan emulator di VM cloud
Untuk membuat project GCP:
- Buka Konsol Google Cloud dan Pilih Project.
- Untuk mengonfirmasi bahwa penagihan diaktifkan untuk project Google Cloud Anda, lihat Mengaktifkan, menonaktifkan, atau mengubah penagihan untuk suatu project .
- Mengaktifkan API.
Buat VM Linux di GCE
1. Aktifkan virtualisasi bertingkat
Secara default, virtualisasi bertingkat diizinkan di level project, folder, atau organisasi. Kecuali jika seseorang di organisasi Anda memiliki menonaktifkan virtualisasi bertingkat, Anda tidak perlu melakukan apa pun untuk mengaktifkannya.
- Menggunakan alat command line gcloud
untuk mengonfirmasi bahwa Virtualisasi Bertingkat diizinkan:
gcloud beta resource-manager org-policies describe \ constraints/compute.disableNestedVirtualization --effective --project=[PROJECT_ID]
2. Membuat {i>disk<i} yang dapat di-{i>booting<i} Ubuntu-1804-lts
- Buka Konsol Cloud.
- Pilih project GCP.
- Buka menu Navigation dan pilih Compute Engine > Disk >
Create Disk.
- Masukkan nama disk. Misalnya,
ubuntu1804lts
- Pilih Region dan Zona. Untuk mendukung Virtualisasi Bertingkat, pastikan Region dan Zona yang Anda pilih mendukung prosesor Haswell (atau yang lebih baru). Untuk mempelajari lebih lanjut, lihat Region dan Zona.
- Pilih gambar sumber
ubuntu-1804-bionic-v20210211
- Tetapkan ukuran disk yang sesuai (sebaiknya 100 GB atau lebih besar).
- Masukkan nama disk. Misalnya,
Gambar 2. Membuat disk yang dapat di-booting Ubuntu.
3. Buat image kustom dengan kunci lisensi khusus untuk mengaktifkan VMX
- Buka Cloud Console.
- Buka Cloud Shell dan gunakan perintah berikut:
gcloud compute images create [IMAGE NAME] --source-disk-zone [DISK ZONE] --source-disk [DISK NAME] \ --licenses "https://www.googleapis.com/compute/v1/projects/vm-options/global/licenses/enable-vmx"
- Masukkan Nama gambar. Misalnya,
aaos-emulator-image
- Setel Zona Disk ke zona tempat Anda membuat disk.
- Setel nama disk ke nama yang Anda gunakan untuk membuat disk.
Contoh:
gcloud compute images create aaos-emulator-image --source-disk-zone us-central1-a \ --source-disk ubuntu1804lts \ --licenses \ "https://www.googleapis.com/compute/v1/projects/vm-options/global/licenses/enable-vmx"
- Masukkan Nama gambar. Misalnya,
Untuk mengetahui detailnya, lihat Instance VM Virtualisasi Bertingkat.
4. Membuat instance VM menggunakan image yang disesuaikan
- Buka Cloud Console.
- Pilih project GCP.
- Buka Menu Navigasi > Compute Engine > di seluruh instance VM.
Gambar 3. Membuat instance VM.
- Masukkan nama instance. Misalnya,
aaosemulator
- Pilih kelompok dan jenis mesin yang diinginkan. Pastikan mesin berisi empat vCPU dan Memori 16 GB (atau lebih).
- Pilih platform CPU untuk Intel Cascade Lake (atau yang lebih baru).
- Ubah boot disk ke image yang dibuat di langkah sebelumnya.
- Aktifkan Firewall untuk:
- Mengizinkan traffic HTTP
- Izinkan traffic HTTPS
5. Konfigurasi firewall untuk membuka port 80 dan 443
- Buka Cloud Console.
- memilih project GCP.
- Buka Menu Navigasi > Compute Engine > Instance VM > Siapkan aturan firewall.
Menginstal software yang diperlukan di VM
- Instal Python 3 dan Python3-env:
sudo apt update sudo apt install python3 sudo apt-get install python3-venv
- Instal Android SDK
dan ADB yang tersedia di jalur tersebut.
sudo apt install android-sdk
Untuk menginstal Docker dan Docker-compose, lihat Docker dan Docker-compose. Pastikan Anda dapat menjalankan pengguna tersebut sebagai pengguna non-root.
- Untuk memastikan CPU mendukung virtualisasi perangkat keras (perintah harus menghasilkan
angka bukan nol):
egrep -c '(vmx|svm)' /proc/cpuinfo
- Instal Kernel Virtual Machine (KVM). Untuk menginstal KVM, jalankan:
sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
- Untuk memastikan KVM berfungsi:
Output harus berupa:sudo apt install cpu-checker kvm-ok
INFO: /dev/kvm exists KVM acceleration can be used
- Untuk menginstal Node.js dan Node Packet Manager (NPM):
sudo apt install nodejs npm
Memulai container yang dihosting
- Untuk memverifikasi penginstalan, jalankan container Android Emulator yang dihosting dari publik
repositori resource. Anda dapat menemukan detail
tentang container
di sini.
Sekarang Anda dapat menjalankan container ini tanpa membangunnya. Contoh:
docker run \ -e ADBKEY="$(cat ~/.android/adbkey)" \ --device /dev/kvm \ --publish 8554:8554/tcp \ --publish 5555:5555/tcp \ us-docker.pkg.dev/android-emulator-268719/images/30-google-x64:30.1.2
Tindakan ini akan menarik container ke bawah (jika tidak tersedia secara lokal) dan meluncurkannya.
- Saat container diluncurkan, hubungkan ke perangkat dengan mengonfigurasi ADB menggunakan cara yang sama
sebagai menghubungkan AVD
pada {i>host<i} lokal. Contoh:
Output harus berupa:adb connect localhost:5555 adb devices
List of devices attached localhost:5555 device
Menyiapkan layanan Emulator AAOS
Untuk menyiapkan layanan Emulator:
- Instal skrip container Docker Android Emulator:
git clone https://github.com/google/android-emulator-container-scripts.git
cd android-emulator-container-script source ./configure.sh
- Tindakan ini akan mengaktifkan lingkungan virtual dan menyediakan emu-docker yang dapat dieksekusi.
Untuk mendapatkan informasi mendetail tentang penggunaannya, luncurkan aplikasi:
emu-docker -h
- Untuk membuat container Docker, setujui perjanjian lisensi.
- Membangun container Docker Emulator AAOS.
- Download build emulator yang lebih baru dari versi 7154743. Contoh:
sdk-repo-linux-emulator-7154743.zip
- Download image sistem emulator AAOS. Misalnya,
sdk-repo-linux-system-images-7115454.zip
:emu-docker create <emulator-zip> <system-image-zip>
- Membuat Penampung Web dan menetapkan nama pengguna serta sandi untuk akses jarak jauh.
./create_web_container.sh -p user1,passwd1
- Mulai Layanan Web Emulator AAOS:
docker-compose -f js/docker/docker-compose-build.yaml -f js/docker/development.yaml up
Anda berhasil memulai Layanan Web Emulator AAOS. Gunakan hal berikut untuk mengakses di browser web:
https://<VM_External__IP>
Pemecahan masalah
Jika terjadi error koneksi ke IP eksternal VM, pastikan VM disiapkan untuk mengizinkan traffic HTTP dan HTTPS. Untuk memvalidasi ini, lihat Menjalankan server web Apache dasar.
Menyiapkan server pengalihan
Anda selalu bisa menggunakan server giliran Anda sendiri. Di bawah ini adalah contoh VM Google Cloud di instance Compute Engine.
Catatan: Agar server pengalihan berfungsi pada instance VM Google Cloud, pastikan mengonfigurasi aturan firewall VM untuk mengizinkan traffic di port TCP dan UDP 3478 dan 3479.
- Instal server coturn:
sudo apt install coturn systemctl stop coturn echo "TURNSERVER_ENABLED=1"|sudo tee -a /etc/default/coturn
- Ubah
/etc/turnserver.conf
dengan menambahkan baris berikut:lt-cred-mech #set your realm name realm=test #coturn username and password user=test:test123 # external-ip=<VM-Public-IP>/<VM-Private-IP> external-ip=34.193.52.134/10.128.0.2 systemctl start coturn
- Ubah file YAML Docker Compose untuk menyertakan konfigurasi TURN:
cd android-emulator-container-script nano js/docker/docker-compose-build.yaml
- Tambahkan dua baris lingkungan berikut di bagian emulator:
shm_size: 128M expose: - "8554" + environment: + - TURN=printf $SNIPPET
- Mulai ulang layanan Emulator AAOS dengan konfigurasi belokan.
Pastikan untuk mengganti IP, nama pengguna, dan kredensial server pengalihan di bawah dengan milik Anda sendiri:
export SNIPPET="{\"iceServers\":[{\"urls\":\"turn:35.193.52.134:3478\",\"username\":\"test\",\"credential\":\"test123\"}]}" docker-compose -f js/docker/docker-compose-build.yaml up