Tạo trình mô phỏng đám mây của riêng bạn

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 để:

  • Cung cấp HTTPS bằng chứng chỉ tự ký.
  • Chuyển hướng lưu lượng truy cập trên cổng 80 (http) đến cổng 443 (https).
  • Đóng vai trò là proxy gRPC cho trình mô phỏng.
  • Xác minh mã thông báo để cho phép truy cập vào điểm cuối gRPC của trình mô phỏng.
  • Chuyển hướng các yêu cầu khác đến thành phần Nginx lưu trữ ứng dụng React.

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:

  1. Truy cập vào Google Cloud Console rồi Chọn một dự án.
  2. Để 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 .
  3. 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.

  1. 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

  1. Chuyển đến Cloud Console.
  2. Chọn dự án GCP.
  3. 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).
    1. Cung cấp tên ổ đĩa. Ví dụ: ubuntu1804lts
    2. 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.
    3. Chọn hình ảnh nguồn của ubuntu-1804-bionic-v20210211
    4. Đặt dung lượng ổ đĩa thích hợp (nên dùng ổ đĩa có dung lượng từ 100 GB trở lên).

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

  1. Chuyển đến Cloud Console.
  2. 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"
    

Để 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

  1. Chuyển đến Cloud Console.
  2. Chọn dự án GCP.
  3. 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.

  4. Nhập tên thực thể. Ví dụ: aaosemulator
  5. 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).
  6. Chọn nền tảng CPU là Intel Cascade Lake (hoặc mới hơn).
  7. Thay đổi đĩa khởi động thành hình ảnh đã tạo ở bước trước.
  8. 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

  1. Chuyển đến Cloud Console.
  2. chọn dự án GCP.
  3. 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

  1. Cài đặt Python 3 và Python3-env:
    sudo apt update
    sudo apt install python3
    sudo apt-get install python3-venv
    
  2. 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 DockerDocker-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.

  3. Để 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
    
  4. 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
    
  5. Cách xác minh KVM đang hoạt động:
    sudo apt install cpu-checker
    kvm-ok
    
    Kết quả sẽ là:
    INFO: /dev/kvm exists
    KVM acceleration can be used
  6. 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ữ

  1. Để 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 đó.

  2. 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ụ:
    adb connect localhost:5555
    adb devices
    
    Kết quả sẽ là:
    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:

  1. 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
    
  2. 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
    
  3. Để tạo vùng chứa Docker, hãy chấp nhận các thoả thuận cấp phép.
  4. Tạo vùng chứa Docker của Trình mô phỏng AAOS.
  5. 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
    
  6. 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>
    
  7. 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
    
  8. 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 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.

  1. Cài đặt máy chủ coturn:
    sudo apt install coturn
    systemctl stop coturn
    echo "TURNSERVER_ENABLED=1"|sudo tee -a /etc/default/coturn
    
  2. 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
    
  3. 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
    
  4. 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
  5. 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