Halaman ini menjelaskan cara menjalankan AAOS Emulator sebagai Layanan Web dan menjalankannya di browser web agar dapat diakses dari jarak jauh oleh pengguna. Tindakan ini memberikan referensi yang memadai dan berkelanjutan melalui Compute Engine Google Cloud. Namun, Anda dapat menggunakan layanan ini di platform cloud publik atau pribadi pilihan Anda.
Tujuan
Konfigurasi dan penyiapan terpusat ini membuat AAOS Emulator dapat diakses oleh seluruh perusahaan, pemasok, dan developer yang bekerja dari rumah. Dengan demikian, pengelolaan dan upgrade AAOS Emulator menjadi lebih efisien ke versi baru dan menghilangkan waktu yang diperlukan untuk menyiapkan dan mengelola mesin lokal untuk setiap pengguna. Solusi ini mengoptimalkan penggunaan resource hardware dan memungkinkan lingkungan pengembangan aplikasi dengan biaya lebih rendah. Misalnya, untuk tujuan:
- Riset pengguna, peninjauan pengalaman pengguna, dukungan pelanggan, dan pelatihan.
- Demo kepada calon pelanggan dan di saluran penjualan.
- Uji, validasi, dan bahkan debug aplikasi (termasuk build HMI OEM harian) dalam skala besar. Pertimbangkan Emulator sebagai pengganti penggunaan test bench untuk mengembangkan aplikasi.
- Agen pusat layanan telepon pelanggan OEM memiliki UI HU yang seragam dan mudah diakses.
Ada banyak manfaat menggunakan AAOS Emulator:
- Gunakan skrip penyiapan untuk membuat Emulator AAOS kustom dan berbasis cloud (emulator cloud).
- Build image AAOS Cloud Emulator yang disesuaikan untuk instance VM:
- Siap menyiapkan emulator berbasis cloud.
- Image AVD AAOS publik yang tersedia bagi pembuat layanan untuk memulai AVD AAOS dengan perintah. Misalnya, image AVD OEM publik sebagai sampel untuk diadaptasi dan diterapkan oleh partner.
Arsitektur
Arsitektur contoh emulator cloud diilustrasikan di bawah. Layanan minimal yang layak pertama Anda akan berfungsi dengan menambahkan image AVD OEM Anda sendiri.
Gambar 1. Arsitektur AVD cloud.
Elemen penyusun emulator utama adalah:
di sini.Item | Tujuan |
---|---|
Android Emulator | Instance emulator menghosting image AVD |
Jembatan goldfish-webrtc | Aplikasi Linux untuk menyediakan komunikasi antara aplikasi react dan Emulator AAOS |
android-emulator-webrtc | Aplikasi React untuk menampilkan UI Emulator di browser web. React juga merekam peristiwa input pengguna dan mengirimkannya kembali ke server. |
Skrip Penampung Android Emulator | Skrip Python untuk mengelola dan membuat image dan container Docker untuk modul software di atas. |
Membuat token untuk mengelola izin akses emulator. | |
Mengaktifkan server | Membuat koneksi langsung WebRTC antara klien dan server. Server turn-on hanya diperlukan saat layanan Emulator berjalan di balik 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 project .
- Aktifkan API.
Membuat VM Linux di GCE
1. Mengaktifkan virtualisasi bertingkat
Secara default, virtualisasi bertingkat diizinkan di tingkat project, folder, atau organisasi. Kecuali jika seseorang di organisasi Anda telah menonaktifkan virtualisasi bertingkat, Anda tidak perlu melakukan apa pun untuk mengaktifkannya.
- Gunakan alat command line gcloud untuk mengonfirmasi bahwa Nested Virtualization diizinkan:
gcloud beta resource-manager org-policies describe \ constraints/compute.disableNestedVirtualization --effective --project=[PROJECT_ID]
2. Membuat disk yang dapat di-booting Ubuntu-1804-lts
- Buka Cloud Console.
- Pilih project GCP.
- Buka menu Navigation, lalu pilih Compute Engine > Disks >
Create Disk.
- Berikan 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 (100 GB atau lebih besar direkomendasikan).
- Berikan nama disk. Misalnya,
Gambar 2. Membuat disk yang dapat di-booting Ubuntu.
3. Membuat 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
- Tetapkan Zona Disk ke zona tempat Anda membuat disk.
- Tetapkan 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 > Instance VM.
Gambar 3. Buat instance VM.
- Masukkan nama instance. Misalnya,
aaosemulator
- Pilih jenis dan kelompok mesin yang diinginkan. Pastikan mesin berisi empat vCPU dan memori sebesar 16 GB (atau lebih).
- Pilih platform CPU menjadi Intel Cascade Lake (atau yang lebih baru).
- Ubah disk booting ke image yang dibuat di langkah sebelumnya.
- Aktifkan Firewall untuk:
- Izinkan traffic HTTP
- Izinkan traffic HTTPS
5. Mengonfigurasi firewall untuk membuka port 80 dan 443
- Buka Cloud Console.
- pilih project GCP.
- Buka Navigation Menu > Compute Engine > VM instance > Set up firewall rule.
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.
sudo apt install android-sdk
Untuk menginstal Docker dan Docker-compose, lihat Docker dan Docker-compose. Pastikan Anda dapat menjalankannya sebagai pengguna non-root.
- Untuk mengonfirmasi bahwa CPU mendukung virtualisasi hardware (perintah akan menghasilkan
angka non-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 memverifikasi bahwa KVM berfungsi:
Outputnya akan menjadi: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 penampung yang dihosting
- Untuk memverifikasi penginstalan, jalankan penampung Android Emulator yang dihosting dari repositori
publik. Anda dapat menemukan detail tentang penampung
di sini.
Anda kini dapat menjalankan penampung ini tanpa mem-build-nya. 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 penampung (jika tidak tersedia secara lokal) dan meluncurkannya.
- Saat penampung diluncurkan, hubungkan ke perangkat dengan mengonfigurasi ADB dengan cara yang sama
seperti menghubungkan AVD di host lokal. Contoh:
Outputnya akan menjadi:adb connect localhost:5555 adb devices
List of devices attached localhost:5555 device
Menyiapkan layanan AAOS Emulator
Untuk menyiapkan layanan Emulator:
- Instal skrip penampung 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:
emu-docker -h
- Untuk membuat container Docker, setujui perjanjian lisensi.
- Build container Docker AAOS Emulator.
- 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>
- Buat Penampung Web dan tetapkan nama pengguna dan 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 link berikut untuk mengaksesnya 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 memvalidasinya, lihat Menjalankan server web Apache dasar.
Menyiapkan server belokan
Anda dapat selalu menggunakan server giliran Anda sendiri. Berikut adalah contoh pada instance VM Google Cloud.
Catatan: Agar server turn berfungsi di instance VM Google Cloud, pastikan untuk mengonfigurasi aturan firewall VM guna 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 server turn, nama pengguna, dan kredensial 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