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 một Dịch vụ web và chạy trong một trình duyệt web để người dùng có thể truy cập từ xa. Qua đó, bạn sẽ có một đầu mối tệp đối chiếu ít khả thi nhất thông qua Google Cloud Compute Engine. 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 cộng hoặc riêng tư nào mà bạn chọn.

Mục đích

Cách thiết lập và cấu hình tập trung này giúp toàn bộ công ty có thể tiếp cận Trình mô phỏng AAOS, nhà cung cấp và các nhà phát triển làm việc tại nhà. Làm như vậy sẽ giúp bạn quản lý và nâng cấp hiệu quả hơn của Trình mô phỏng AAOS cho các phiên bản mới và giảm thiểu thời gian cần thiết để thiết lập cũng như quản lý các máy cục bộ cho người dùng cá nhân. 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ụ: nhằm mục đích:

  • Nghiên cứu về 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 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ả các bản dựng HMI của OEM hằng ngày) trên quy mô lớn. Cân nhắc Trình mô phỏng thay thế cho băng thử nghiệm dùng để phát triển ứng dụng.
  • Nhân viên hỗ trợ khách hàng của nhà sản xuất thiết bị gốc (OEM) có giao diện người dùng HU đồng nhất, dễ truy cập.

Sau đây là một số lợi ích khi sử dụng Trình mô phỏng AAOS:

  • Dùng tập lệnh thiết lập để tạo Trình mô phỏng AAOS tuỳ chỉnh và dựa trên đám mây (trình mô phỏng đám mây).
  • Tạo hình ảnh Trình mô phỏng đám mây AAOS tuỳ chỉnh cho các thực thể máy ảo:
    • Sẵn sàng thiết lập trình mô phỏng trên đám mây.
    • Có sẵn hình ảnh AVD AAOS công khai cho trình tạo dịch vụ để bắt đầu AVD AAOS bằng một lệnh. Ví dụ: hình ảnh AVD công khai của OEM làm mẫu để đố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ạ bên dưới. Đầu tiên của bạn dịch vụ tối thiểu khả thi sẽ hoạt động bằng cách thêm hình ảnh AVD của nhà sản xuất thiết bị gốc (OEM) của riêng bạn.

Hình 1. Cấu trúc AVD trên đám mây.

Các thành phần chính của trình mô phỏng là:

tại đây.
Mặt hàng Mục đích
Trình mô phỏng Android Thực thể trình mô phỏng lưu trữ hình ảnh AVD
Cầu lưới cá vàng Ứ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 (Phản ứng) để hiện giao diện người dùng của Trình mô phỏng trên web trình duyệt. Phản ứng cũng ghi lại các sự kiện đầu vào của người dùng rồi gửi lại cho máy chủ.
Tập lệnh vùng chứa Trình mô phỏng Android Tập lệnh Python để quản lý và tạo hình ảnh cũng như vùng chứa Docker 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ật máy chủ chỉ bắt buộc 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 cho:

  • 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) sang 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, thành phần 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 một 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 tính năng thanh toán đã được bật cho dự án Google Cloud của bạn, hãy xem Bật, tắt hoặc thay đổi thông tin thanh toán cho dự án
  3. Bật API.

Tạo một máy ảo Linux trong GCE

1. Bật tính năng ảo hoá lồng nhau

Theo mặc định, ảo hoá lồng nhau được cho phép ở cấp dự án, thư mục hoặc tổ chức. Trừ phi một người nào đó 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 phải làm gì để 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 cho phép Ảo hoá lồng nhau:
    gcloud beta resource-manager org-policies describe   \
      constraints/compute.disableNestedVirtualization  --effective --project=[PROJECT_ID]
    

2. Tạo ổ đĩa có khả năng khởi động bằng Ubuntu-1804-lts

  1. Chuyển đến Bảng điều khiển Cloud.
  2. Chọn dự án GCP.
  3. Chuyển đến trình đơn Navigation (Điều hướng) rồi chọn Compute Engine > (Công cụ điện toán) > Đĩa > Tạo ổ đĩa.
    1. Cung cấp tên ổ đĩa. Ví dụ: ubuntu1804lts
    2. Chọn một Khu vực và vùng. Để hỗ trợ Ảo hoá lồng nhau, hãy đảm bảo bạn chọn Vùng và Vùng bạn chọn hỗ trợ bộ xử lý Haswell (hoặc cao hơn). Để tìm hiểu thêm, hãy xem Region and Zones (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 phù hợp (nên dùng 100 GB trở lên).

Hình 2. Tạo đĩa có khả năng khởi động Ubuntu.

3. Tạo một hình ảnh tuỳ chỉnh bằng khoá cấp phép đặc biệt để bật VMX

  1. Truy cập vào Cloud Console.
  2. Mở Cloud Shell và 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 cho Hình ảnh. Ví dụ: aaos-emulator-image
    • Đặt Disk Zone (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 Thực thể máy ảo ảo hoá lồng nhau.

4. Tạo một thực thể máy ảo bằng hình ảnh tuỳ chỉnh

  1. Chuyển đến Bảng điều khiển Cloud.
  2. Chọn dự án GCP.
  3. Chuyển đến Trình đơn điều hướng > Compute Engine > Phiên bản máy ảo.

    Hình 3. Tạo một thực thể máy ảo.

  4. Nhập tên phiên bản. Ví dụ: aaosemulator
  5. Chọn nhóm máy và loại máy mong muốn. Đảm bảo máy chứa 4 vCPU và Bộ nhớ 16 GB (trở lên).
  6. Chọn nền tảng CPU là Intel Cascade Lake (trở lê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 qua HTTPS

5. Định cấu hình tường lửa để mở cổng 80 và 443

  1. Chuyển đến Bảng điều khiển Cloud.
  2. chọn dự án GCP.
  3. Chuyển đến Trình đơn điều hướng > Compute Engine > Phiên bản 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 DockerDocker-compose. Đảm bảo bạn có thể chạy chúng với tư cách là người dùng không phải thư mục gốc.

  3. Để xác nhận rằng CPU có hỗ trợ ảo hoá phần cứng (lệnh này phải dẫn đến số khác 0):
    egrep -c '(vmx|svm)' /proc/cpuinfo
    
  4. Cài đặt Máy ảo Kernel (KVM). Để cài đặt KVM, hãy chạy:
    sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
    
  5. Để xác minh KVM đang hoạt động, hãy làm như sau:
    sudo apt install cpu-checker
    kvm-ok
    
    Kết quả đầu ra sẽ là:
    INFO: /dev/kvm exists
    KVM acceleration can be used
    
  6. Để cài đặt Node.js và Trình quản lý gói nút (bức xạ ):
    sudo apt install nodejs npm
    

Bắt đầu các vùng chứa được lưu trữ

  1. Để xác minh việc cài đặt, hãy chạy các vùng chứa Trình mô phỏng Android được lưu trữ từ công khai kho lưu trữ. Bạn có thể tìm thấy 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 xuống vùng chứa (nếu không có sẵn cục bộ) và khởi chạy vùng chứa đó.

  2. Khi khởi chạy vùng chứa, hãy kết nối với thiết bị bằng cách định cấu hình ADB theo cách tương tự như kết nối AVD trên một máy chủ lưu trữ cục bộ. Ví dụ:
    adb connect localhost:5555
    adb devices
    
    Kết quả đầu ra 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 trình tạo emu-docker có thể thực thi. Để xem thông tin chi tiết về việc sử dụng tính năng này, hãy chạy công cụ này:
    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 phiên bản mới hơn phiên bản 7154743 xuống. Ví dụ:
    sdk-repo-linux-emulator-7154743.zip
    
  6. Tải ảnh hệ thống 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 trình mô phỏng AAOS! Sử dụng các tính năng sau để truy cập nội dung đó 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 ngoài của máy ảo, hãy đảm bảo 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 Chạy một máy chủ web Apache cơ bản.

Thiết lập máy chủ xoay

Bạn luôn có thể sử dụng máy chủ lượt của riêng mình. Dưới đây là ví dụ về một máy ảo Google Cloud thực thể.

Lưu ý: Để máy chủ lượt hoạt động trên 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 để bao gồm cấu hình TURN:
    cd android-emulator-container-script
    nano  js/docker/docker-compose-build.yaml
    
  4. Thêm 2 dòng môi trường sau đây 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 bật/tắt. Hãy nhớ thay thế IP, tên người dùng và thông tin đăng nhập của máy chủ bật/tắt 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