Trang này mô tả cách chạy Trình mô phỏng AAOS dưới dạng Dịch vụ web và chạy trình mô phỏng này trong trình duyệt web để người dùng có thể truy cập từ xa. Việc này cung cấp một tài liệu tham khảo toàn diện, tối thiểu có thể thực hiện thông qua Compute Engine của Google Cloud. Tuy nhiên, bạn có thể sử dụng dịch vụ này trên bất kỳ nền tảng đám mây công khai hoặc riêng tư nào mà bạn chọn.
Mục đích
Cấu hình và chế độ thiết lập tập trung này giúp toàn bộ công ty, nhà cung cấp và nhà phát triển làm việc tại nhà có thể truy cập vào Trình mô phỏng AAOS. Việc này giúp bạn quản lý và nâng cấp Trình mô phỏng AAOS lên các phiên bản mới hiệu quả hơn, đồng thời loại bỏ thời gian cần thiết để thiết lập và quản lý máy cục bộ cho từng người dùng. Giải pháp này tối ưu hoá việc sử dụng tài nguyên phần cứng và cho phép môi trường phát triển ứng dụng có chi phí thấp hơn. Ví dụ: cho mục đích:
- Nghiên cứu người dùng, đánh giá trải nghiệm người dùng, hỗ trợ khách hàng và đào tạo.
- Bản minh hoạ cho khách hàng tiềm năng và trong các kênh bán hàng.
- Kiểm thử, xác thực và thậm chí gỡ lỗi ứng dụng (bao gồm cả bản dựng HMI OEM hằng ngày) trên quy mô lớn. Hãy cân nhắc việc sử dụng Trình mô phỏng thay cho các băng ghế thử nghiệm để phát triển ứng dụng.
- Nhân viên tổng đài hỗ trợ khách hàng của OEM có giao diện người dùng HU đồng nhất, dễ truy cập.
Việc sử dụng Trình mô phỏng AAOS mang lại nhiều lợi ích:
- Sử dụng tập lệnh thiết lập để tạo Trình mô phỏng AAOS (trình mô phỏng trên đám mây) tuỳ chỉnh và dựa trên đám mây.
- Tạo hình ảnh Trình mô phỏng AAOS trên đám mây tuỳ chỉnh cho các phiên bản máy ảo:
- Thiết lập sẵn trình mô phỏng trên đám mây.
- Hình ảnh AVD AAOS công khai có sẵn cho trình tạo dịch vụ để khởi động AVD AAOS bằng một lệnh. Ví dụ: hình ảnh AVD công khai của OEM làm mẫu để các đối tác điều chỉnh và áp dụng.
Kiến trúc
Cấu trúc của ví dụ về trình mô phỏng đám mây được minh hoạ dưới đây. Dịch vụ khả thi tối thiểu đầu tiên của bạn sẽ hoạt động bằng cách thêm hình ảnh AVD OEM của riêng bạn.
Hình 1. Kiến trúc AVD trên đám mây.
Các khối xây dựng chính của trình mô phỏng là:
tại đây.Mục | Mục đích |
---|---|
Trình mô phỏng Android | Phiên bản trình mô phỏng lưu trữ hình ảnh AVD |
Cầu Goldfish-webrtc | Ứng dụng Linux để cung cấp khả năng giao tiếp giữa ứng dụng phản ứng và Trình mô phỏng AAOS |
android-emulator-webrtc | Ứng dụng React để hiển thị giao diện người dùng của Trình mô phỏng trong trình duyệt web. React cũng ghi lại các sự kiện do người dùng nhập và gửi lại cho máy chủ. |
Kịch bản vùng chứa của Trình mô phỏng Android | Tập lệnh Python để quản lý và tạo hình ảnh Docker cũng như vùng chứa cho các mô-đun phần mềm ở trên. |
Tạo mã thông báo để quản lý quyền truy cập của trình mô phỏng. | |
Bật máy chủ | Thiết lập kết nối trực tiếp WebRTC giữa ứng dụng và máy chủ. Bạn chỉ cần bật máy chủ khi dịch vụ Trình mô phỏng đang chạy sau tường lửa hoặc proxy. |
Envoy | Dịch vụ proxy để:
|
Thiết lập trình mô phỏng trên máy ảo trên đám mây
Cách tạo dự án GCP:
- Truy cập vào Google Cloud Console rồi Chọn một dự án.
- Để xác nhận rằng bạn đã bật tính năng thanh toán cho dự án trên Google Cloud, hãy xem bài viết Bật, tắt hoặc thay đổi thông tin thanh toán cho một dự án .
- Bật API.
Tạo máy ảo Linux trong GCE
1. Bật tính năng ảo hoá lồng nhau
Theo mặc định, bạn có thể sử dụng tính năng ảo hoá lồng nhau ở cấp dự án, thư mục hoặc tổ chức. Trừ phi có người trong tổ chức của bạn đã tắt tính năng ảo hoá lồng nhau, bạn không cần làm gì cả để bật tính năng này.
- Sử dụng công cụ dòng lệnh gcloud để xác nhận rằng bạn được phép sử dụng tính năng Ảo hoá lồng nhau:
gcloud beta resource-manager org-policies describe \ constraints/compute.disableNestedVirtualization --effective --project=[PROJECT_ID]
2. Tạo ổ đĩa có thể khởi động Ubuntu-1804-lts
- Chuyển đến Cloud Console.
- Chọn dự án GCP.
- Chuyển đến trình đơn Navigation (Điều hướng) rồi chọn Compute Engine > Disks > Create Disk (Compute Engine > Đĩa > Tạo đĩa).
- Cung cấp tên ổ đĩa. Ví dụ:
ubuntu1804lts
- Chọn Khu vực và Vùng. Để hỗ trợ tính năng Ảo hoá lồng nhau, hãy đảm bảo rằng Khu vực và Vùng bạn chọn hỗ trợ bộ xử lý Haswell (hoặc mới hơn). Để tìm hiểu thêm, hãy xem phần Khu vực và Vùng.
- Chọn hình ảnh nguồn của
ubuntu-1804-bionic-v20210211
- Đặt dung lượng ổ đĩa thích hợp (nên dùng ổ đĩa có dung lượng từ 100 GB trở lên).
- Cung cấp tên ổ đĩa. Ví dụ:
Hình 2. Tạo đĩa khởi động Ubuntu.
3. Tạo hình ảnh tuỳ chỉnh bằng khoá cấp phép đặc biệt để bật VMX
- Chuyển đến Cloud Console.
- Mở Cloud Shell rồi sử dụng lệnh sau:
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"
- Nhập tên Hình ảnh. Ví dụ:
aaos-emulator-image
- Đặt Vùng ổ đĩa thành vùng mà bạn đã tạo ổ đĩa.
- Đặt tên đĩa thành tên bạn đã dùng để tạo đĩa.
Ví dụ:
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"
- Nhập tên Hình ảnh. Ví dụ:
Để biết thông tin chi tiết, hãy xem phần Phiên bản máy ảo ảo hoá lồng nhau.
4. Tạo một phiên bản máy ảo bằng hình ảnh tuỳ chỉnh
- Chuyển đến Cloud Console.
- Chọn dự án GCP.
- Chuyển đến Trình đơn điều hướng > Compute Engine > Thực thể máy ảo.
Hình 3. Tạo một phiên bản máy ảo.
- Nhập tên thực thể. Ví dụ:
aaosemulator
- Chọn loại và dòng máy mong muốn. Đảm bảo máy có 4 vCPU và bộ nhớ 16 GB (trở lên).
- Chọn nền tảng CPU là Intel Cascade Lake (hoặc mới hơn).
- Thay đổi đĩa khởi động thành hình ảnh đã tạo ở bước trước.
- Bật Tường lửa cho:
- Cho phép lưu lượng truy cập HTTP
- Cho phép lưu lượng truy cập HTTPS
5. Định cấu hình tường lửa để mở cổng 80 và 443
- Chuyển đến Cloud Console.
- chọn dự án GCP.
- Chuyển đến Trình đơn điều hướng > Compute Engine > Thực thể máy ảo > Thiết lập quy tắc tường lửa.
Cài đặt phần mềm cần thiết trên máy ảo
- Cài đặt Python 3 và Python3-env:
sudo apt update sudo apt install python3 sudo apt-get install python3-venv
- Cài đặt SDK Android và ADB có sẵn trên đường dẫn.
sudo apt install android-sdk
Để cài đặt Docker và Docker-compose, hãy xem phần Docker và Docker-compose. Đảm bảo bạn có thể chạy các ứng dụng này với tư cách là người dùng không phải là quản trị viên.
- Để xác nhận CPU hỗ trợ tính năng ảo hoá phần cứng (lệnh sẽ trả về một số khác 0):
egrep -c '(vmx|svm)' /proc/cpuinfo
- Cài đặt Máy ảo nhân (KVM). Để cài đặt KVM, hãy chạy:
sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
- Cách xác minh KVM đang hoạt động:
Kết quả sẽ là:sudo apt install cpu-checker kvm-ok
INFO: /dev/kvm exists KVM acceleration can be used
- Cách cài đặt Node.js và Trình quản lý gói nút (NPM):
sudo apt install nodejs npm
Khởi động các vùng chứa được lưu trữ
- Để xác minh quá trình cài đặt, hãy chạy các vùng chứa Trình mô phỏng Android được lưu trữ từ kho lưu trữ công khai. Bạn có thể xem thông tin chi tiết về các vùng chứa tại đây.
Giờ đây, bạn có thể chạy các vùng chứa này mà không cần tạo. Ví dụ:
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
Thao tác này sẽ kéo vùng chứa xuống (nếu không có trên máy) và khởi chạy vùng chứa đó.
- Khi vùng chứa được khởi chạy, hãy kết nối với thiết bị bằng cách định cấu hình ADB giống như cách kết nối AVD trên máy chủ cục bộ. Ví dụ:
Kết quả sẽ là:adb connect localhost:5555 adb devices
List of devices attached localhost:5555 device
Thiết lập dịch vụ Trình mô phỏng AAOS
Cách thiết lập dịch vụ Trình mô phỏng:
- Cài đặt tập lệnh vùng chứa Docker của Trình mô phỏng Android:
git clone https://github.com/google/android-emulator-container-scripts.git
cd android-emulator-container-script source ./configure.sh
- Thao tác này sẽ kích hoạt một môi trường ảo và cung cấp emu-docker có thể thực thi.
Để biết thông tin chi tiết về cách sử dụng, hãy khởi chạy ứng dụng:
emu-docker -h
- Để tạo vùng chứa Docker, hãy chấp nhận các thoả thuận cấp phép.
- Tạo vùng chứa Docker của Trình mô phỏng AAOS.
- Tải bản dựng trình mô phỏng xuống sau phiên bản 7154743. Ví dụ:
sdk-repo-linux-emulator-7154743.zip
- Tải hình ảnh hệ thống của trình mô phỏng AAOS xuống. Ví dụ:
sdk-repo-linux-system-images-7115454.zip
:emu-docker create <emulator-zip> <system-image-zip>
- Tạo Vùng chứa web và đặt tên người dùng và mật khẩu để truy cập từ xa.
./create_web_container.sh -p user1,passwd1
- Khởi động Dịch vụ web của trình mô phỏng AAOS:
docker-compose -f js/docker/docker-compose-build.yaml -f js/docker/development.yaml up
Bạn đã khởi động thành công Dịch vụ web của trình mô phỏng AAOS! Hãy làm như sau để truy cập vào trang này trên trình duyệt web:
https://<VM_External__IP>
Khắc phục sự cố
Nếu xảy ra lỗi kết nối với IP bên ngoài của máy ảo, hãy đảm bảo rằng máy ảo được thiết lập để cho phép cả lưu lượng truy cập HTTP và HTTPS. Để xác thực điều này, hãy xem phần Chạy máy chủ web Apache cơ bản.
Thiết lập máy chủ rẽ
Bạn luôn có thể sử dụng máy chủ lượt rẽ của riêng mình. Dưới đây là một mẫu trên một phiên bản máy ảo Google Cloud.
Lưu ý: Để máy chủ rẽ hoạt động trên một phiên bản máy ảo Google Cloud, hãy nhớ định cấu hình quy tắc tường lửa của máy ảo để cho phép lưu lượng truy cập trên cổng TCP và UDP 3478 và 3479.
- Cài đặt máy chủ coturn:
sudo apt install coturn systemctl stop coturn echo "TURNSERVER_ENABLED=1"|sudo tee -a /etc/default/coturn
- Sửa đổi
/etc/turnserver.conf
bằng cách thêm các dòng sau: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
- Sửa đổi tệp YAML của Docker Compose để thêm cấu hình TURN:
cd android-emulator-container-script nano js/docker/docker-compose-build.yaml
- Thêm hai dòng môi trường sau vào phần trình mô phỏng:
shm_size: 128M expose: - "8554" + environment: + - TURN=printf $SNIPPET
- Khởi động lại dịch vụ Trình mô phỏng AAOS bằng cấu hình rẽ.
Hãy nhớ thay thế IP máy chủ điều khiển, tên người dùng và thông tin xác thực bên dưới bằng thông tin của riêng bạn:
export SNIPPET="{\"iceServers\":[{\"urls\":\"turn:35.193.52.134:3478\",\"username\":\"test\",\"credential\":\"test123\"}]}" docker-compose -f js/docker/docker-compose-build.yaml up