Artikel ini menjelaskan cara menjalankan AAOS Emulator sebagai Layanan Web dan menjalankannya di browser web agar dapat diakses pengguna dari jarak jauh. Melakukannya akan memberikan referensi menyeluruh dan minimal yang layak melalui Google Cloud Compute Engine . Karena itu, Anda dapat menggunakan layanan ini di platform cloud publik atau pribadi apa pun pilihan Anda.
Tujuan
Konfigurasi dan pengaturan terpusat ini membuat AAOS Emulator dapat diakses oleh seluruh perusahaan, pemasok, dan pengembang kerja dari rumah. Melakukannya akan membuatnya lebih efisien untuk mengelola dan memutakhirkan AAOS Emulator ke versi baru dan menghilangkan waktu yang diperlukan untuk menyiapkan dan mengelola mesin lokal untuk pengguna individu. Solusi ini mengoptimalkan penggunaan sumber daya perangkat keras dan memungkinkan lingkungan pengembangan aplikasi dengan biaya lebih rendah. Misalnya, untuk tujuan:
- Riset pengguna, tinjauan pengalaman pengguna, dukungan pelanggan, dan pelatihan.
- Demo ke pelanggan potensial dan di saluran penjualan.
- Uji, validasi, dan bahkan debug aplikasi (termasuk build OEM HMI harian) dalam skala besar. Pertimbangkan Emulator sebagai pengganti bangku tes yang digunakan untuk mengembangkan aplikasi.
- Agen pusat panggilan pelanggan OEM memiliki HU UI yang seragam dan mudah diakses.
Manfaat menggunakan AAOS Emulator sangat banyak:
- Gunakan skrip penyiapan untuk membuat AAOS Emulator (emulator cloud) yang disesuaikan dan berbasis cloud.
- Buat image AAOS Cloud Emulator yang disesuaikan untuk instans VM:
- Menyiapkan emulator berbasis cloud.
- Gambar AAOS AVD publik tersedia bagi pembuat layanan untuk memulai AAOS AVD dengan perintah. Misalnya, gambar AVD OEM publik sebagai sampel untuk diadaptasi dan diterapkan oleh mitra.
Arsitektur
Arsitektur contoh emulator cloud diilustrasikan di bawah ini. Layanan minimal pertama Anda akan bekerja dengan menambahkan gambar OEM AVD Anda sendiri.
Gambar 1. Arsitektur Cloud AVD
Blok penyusun emulator utama adalah:
Barang | Tujuan |
---|---|
Emulator Android | 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 browser web. React juga menangkap kejadian input pengguna dan mengirimkannya kembali ke server. |
Skrip Kontainer Emulator Android | Skrip Python untuk mengelola dan membuat image dan container Docker untuk modul perangkat lunak di atas. |
Layanan JWT (layanan Token Web JSON) | Menghasilkan token untuk mengelola izin akses emulator. |
Hidupkan server | Membuat koneksi langsung WebRTC antara klien dan server. Turn server diperlukan hanya ketika layanan Emulator berjalan di belakang firewall atau proxy. |
Utusan | Layanan proxy ke:
|
Siapkan emulator di VM cloud
Untuk membuat proyek GCP:
- Buka Google Cloud Console dan Pilih Proyek .
- Untuk mengonfirmasi bahwa penagihan diaktifkan untuk proyek Google Cloud Anda, lihat Mengaktifkan, menonaktifkan, atau mengubah penagihan untuk suatu proyek .
- Aktifkan API .
Buat VM Linux di GCE
1. Aktifkan virtualisasi bersarang
Secara default, virtualisasi bertingkat diperbolehkan di tingkat proyek, folder, atau organisasi. Kecuali seseorang di organisasi Anda telah menonaktifkan virtualisasi bersarang , Anda tidak perlu melakukan apa pun untuk mengaktifkannya.
- Gunakan alat baris perintah gcloud untuk mengonfirmasi bahwa Virtualisasi Bersarang diizinkan:
gcloud beta resource-manager org-policies describe \ constraints/compute.disableNestedVirtualization --effective --project=[PROJECT_ID]
2. Buat disk bootable Ubuntu-1804-lts
- Buka Cloud Console .
- Pilih proyek GCP.
- Buka menu Navigasi > Mesin Hitung > Disk > Buat Disk.
- Berikan nama disk. Misalnya,
ubuntu1804lts
- Pilih Wilayah dan Zona. Untuk mendukung Virtualisasi Bersarang, pastikan Wilayah dan Zona yang Anda pilih mendukung prosesor Haswell (atau yang lebih baru). Untuk mempelajari lebih lanjut, lihat Wilayah dan Zona .
- Pilih gambar sumber
ubuntu-1804-bionic-v20210211
- Atur ukuran disk yang sesuai (disarankan 100GB atau lebih besar).
- Berikan nama disk. Misalnya,
Gambar 1. Buat disk bootable Ubuntu
3. Buat gambar khusus 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
- Atur Disk Zone ke zona tempat Anda membuat disk.
- Tetapkan nama disk ke nama yang Anda gunakan untuk membuat disk.
Sebagai 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 detailnya, lihat Instans VM Virtualisasi Bersarang .
4. Buat instance VM menggunakan gambar yang disesuaikan
- Buka Cloud Console .
- Pilih proyek GCP.
- Buka Menu Navigasi > Compute Engine > Instance VM.
Gambar 1. Buat instance VM
- Masukkan nama instance. Misalnya,
aaosemulator
- Pilih keluarga dan jenis mesin yang diinginkan. Pastikan mesin berisi empat vCPU dan memori 16 GB (atau lebih).
- Pilih platform CPU untuk menjadi Intel Cascade Lake (atau lebih baru).
- Ubah boot disk ke gambar yang dibuat pada langkah sebelumnya.
- Aktifkan Firewall untuk:
- Izinkan lalu lintas HTTP
- Izinkan lalu lintas HTTPS
5. Konfigurasikan firewall untuk membuka port 80 dan 443
- Buka Cloud Console .
- pilih proyek GCP.
- Buka Menu Navigasi > Compute Engine > Instance VM > Siapkan aturan firewall.
Instal perangkat lunak yang diperlukan pada 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 menjalankan ini sebagai pengguna non-root .
- Untuk mengonfirmasi CPU mendukung virtualisasi perangkat keras (perintah harus menghasilkan angka bukan nol):
egrep -c '(vmx|svm)' /proc/cpuinfo
- Instal Mesin Virtual Kernel (KVM). Untuk menginstal KVM, jalankan:
sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
- Untuk memverifikasi KVM berfungsi:
sudo apt install cpu-checker kvm-ok
Outputnya harus:INFO: /dev/kvm exists KVM acceleration can be used
- Untuk menginstal Node.js dan Node Packet Manager (NPM):
sudo apt install nodejs npm
Mulai wadah yang dihosting
- Untuk memverifikasi penginstalan, jalankan wadah Android Emulator yang dihosting dari repositori publik. Anda dapat menemukan detail tentang kontainer di sini . Anda sekarang dapat menjalankan container ini tanpa membuatnya. Misalnya:
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
Ini menarik wadah (jika tidak tersedia secara lokal) dan meluncurkannya.
- Saat wadah diluncurkan, sambungkan ke perangkat dengan mengonfigurasi ADB dengan cara yang sama seperti menghubungkan AVD pada host lokal. Misalnya:
adb connect localhost:5555 adb devices
Outputnya harus:List of devices attached localhost:5555 device
Siapkan layanan AAOS Emulator
Untuk menyiapkan layanan Emulator:
- Instal skrip wadah Android Emulator Docker:
git clone https://github.com/google/android-emulator-container-scripts.git
cd android-emulator-container-script source ./configure.sh
- Ini mengaktifkan lingkungan virtual dan membuat emu-docker yang dapat dieksekusi tersedia. Untuk mendapatkan informasi mendetail tentang penggunaannya, luncurkan:
emu-docker -h
- Untuk membuat wadah Docker, terima perjanjian lisensi.
- Bangun wadah AAOS Emulator Docker.
- Unduh build emulator setelah versi 7154743. Misalnya:
sdk-repo-linux-emulator-7154743.zip
- Unduh citra sistem emulator AAOS. Misalnya,
sdk-repo-linux-system-images-7115454.zip
: l10nemu-docker create <emulator-zip> <system-image-zip>
- Buat Wadah Web dan atur nama pengguna dan kata 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 telah berhasil memulai Layanan Web Emulator AAOS! Gunakan yang berikut ini untuk mengaksesnya di browser web:
https://<VM_External__IP>
Penyelesaian masalah
Jika terjadi kesalahan koneksi ke IP eksternal VM, pastikan VM diatur untuk mengizinkan lalu lintas HTTP dan HTTPS. Untuk memvalidasi ini, lihat Menjalankan server web Apache dasar .
Siapkan server giliran
Anda selalu dapat menggunakan server giliran Anda sendiri. Di bawah ini adalah contoh pada instance VM Google Cloud.
Catatan: Agar server giliran berfungsi pada instance VM Google Cloud, pastikan untuk mengonfigurasi aturan firewall VM untuk mengizinkan lalu lintas pada port TCP dan UDP 3478 dan 3479.
- Instal server coturn: l10n
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 Docker Compose YAML 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
- Restart layanan AAOS Emulator dengan konfigurasi belokan. Pastikan untuk mengganti IP turn server, username, dan credential di bawah ini 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