Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Xây dựng Trình giả lập đám mây của riêng bạn

Bài viết 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 trong trình duyệt web để người dùng có thể truy cập từ xa. Làm như vậy cung cấp tài liệu tham khảo từ đầu đến cuối, khả thi tối thiểu thông qua Google Cloud Compute Engine . Điều đó nói rằng, 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 lựa chọn.

Mục đích

Cấu hình và thiết lập tập trung này làm cho Trình mô phỏng AAOS có thể truy cập được cho toàn bộ công ty, nhà cung cấp và nhà phát triển làm việc tại nhà. Làm như vậy giúp quản lý và nâng cấp Trình mô phỏng AAOS lên phiên bản mới hiệu quả hơn và loại bỏ thời gian cần thiết để thiết lập và 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 hóa việc sử dụng tài nguyên phần cứng và tạo môi trường phát triển ứng dụng với chi phí thấp hơn. Ví dụ, cho các 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.
  • Demo cho khách hàng tiềm năng và trong các kênh bán hàng.
  • Kiểm tra, xác thực và thậm chí gỡ lỗi các ứng dụng (bao gồm cả các bản dựng HMI OEM hàng ngày) trên quy mô lớn. Hãy coi Trình giả lập là một sự thay thế cho các băng ghế thử nghiệm được sử dụng để phát triển ứng dụng.
  • Các đại lý trung tâm cuộc gọi khách hàng OEM có giao diện người dùng HU thống nhất, dễ truy cập.

Những lợi ích của việc sử dụng Trình giả lập AAOS là rất nhiều:

  • Sử dụng tập lệnh thiết lập để tạo Trình giả lập AAOS dựa trên đám mây và tùy chỉnh (trình mô phỏng đám mây).
  • Xây dựng hình ảnh Trình mô phỏng đám mây AAOS tùy chỉnh cho các phiên bản VM:
    • Sẵn sàng thiết lập trình giả lập dựa trên đám mây.
    • Hình ảnh AAOS AVD công khai có sẵn cho người tạo dịch vụ để khởi động AAOS AVD bằng một lệnh. Ví dụ: hình ảnh AVD OEM công khai làm mẫu để các đối tác điều chỉnh và áp dụng.

Ngành kiến ​​​​trúc

Kiến trúc của ví dụ giả lập đám mây được minh họa bên dưới. 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 đám mây AVD

Các khối xây dựng trình giả lập chính là:

Mục Mục đích
Trình giả lập Android Phiên bản giả lập lưu trữ hình ảnh AVD
Cầu cá vàng-webrtc Ứng dụng Linux để cung cấp 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 giả lập trong trình duyệt web. React cũng nắm bắt các sự kiện đầu vào của người dùng và gửi chúng trở lại máy chủ.
Tập lệnh vùng chứa trình giả lập Android Các tập lệnh Python để quản lý và tạo các hình ảnh và vùng chứa Docker cho các mô-đun phần mềm ở trên.
Dịch vụ JWT (dịch vụ mã thông báo web JSON) Tạo mã thông báo để quản lý quyền truy cập của trình giả lập.
Quay máy chủ Thiết lập kết nối trực tiếp WebRTC giữa máy khách và máy chủ. Máy chủ rẽ chỉ được yêu cầu khi dịch vụ Trình mô phỏng đang chạy sau tường lửa hoặc proxy.
Phái viên

Một dịch vụ proxy để:

  • Cung cấp HTTPS bằng chứng chỉ tự ký.
  • Chuyển hướng lưu lượng trên cổng 80 (http) sang cổng 443 (https).
  • Hoạt động như một 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 giả lập.
  • 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 giả lập trên máy ảo đám mây

Để tạo một dự án GCP:

  1. Đi tới Bảng điều khiển đám mây của Google và Chọn một dự án .
  2. Để xác nhận rằ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 thanh toán cho một dự án .
  3. Bật API .

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

1. Bật ảo hóa lồng nhau

Theo mặc định, ảo hóa lồng nhau được phép ở cấp dự án, thư mục hoặc tổ chức. Trừ khi ai đó trong tổ chức của bạn đã tắt ảo hóa 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 Ảo hóa lồng nhau được phép:
    gcloud beta resource-manager org-policies describe   \
      constraints/compute.disableNestedVirtualization  --effective --project=[PROJECT_ID]
    

2. Tạo đĩa khởi động Ubuntu-1804-lts

  1. Đi tới Bảng điều khiển đám mây .
  2. Chọn dự án GCP.
  3. Đi tới menu Điều hướng> Công cụ tính toán> Đĩa> Tạo Đĩa.
    1. Cung cấp tên đĩa. Ví dụ: ubuntu1804lts
    2. Chọn Vùng và Vùng. Để hỗ trợ Ảo hóa lồng nhau, hãy đảm bảo Vùng 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 Khu vực và Khu vực .
    3. Chọn hình ảnh nguồn của ubuntu-1804-bionic-v20210211
    4. Đặt kích thước đĩa thích hợp (khuyến nghị 100GB hoặc lớn hơn).

Hình 1. Tạo đĩa khởi động Ubuntu

3. Tạo hình ảnh tùy chỉnh với khóa cấp phép đặc biệt để kích hoạt VMX

  1. Đi tới Bảng điều khiển đám mây .
  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 Hình ảnh. Ví dụ: aaos-emulator-image
    • Đặt Disk Zone thành vùng mà bạn đã tạo đĩa.
    • Đặt tên đĩa thành tên bạn đã sử 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 chi tiết, hãy xem Phiên bản máy ảo ảo hóa lồng nhau .

4. Tạo một phiên bản VM bằng cách sử dụng hình ảnh tùy chỉnh

  1. Đi tới Bảng điều khiển đám mây .
  2. Chọn dự án GCP.
  3. Đi tới Menu Điều hướng> Máy tính> Phiên bản VM.

    Hình 1. Tạo một phiên bản VM

  4. Nhập tên phiên bản. Ví dụ, aaosemulator
  5. Chọn loại và họ máy mong muốn. Đảm bảo rằng máy có bốn vCPU và 16 GB bộ nhớ (hoặc nhiều hơ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 HTTPS

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

  1. Đi tới Bảng điều khiển đám mây .
  2. chọn dự án GCP.
  3. Đi tới Menu Điều hướng> Máy tính> Phiên bản VM> Thiết lập quy tắc tường lửa.

Cài đặt phần mềm cần thiết trên VM

  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 Android SDK và ADB có sẵn trên đường dẫn.
    sudo apt install android-sdk
    

    Để cài đặt Docker và Docker-biên tập, hãy xem DockerDocker-biên tập . Đảm bảo rằng bạn có thể chạy chúng với tư cách là người dùng không phải root .

  3. Để xác nhận CPU hỗ trợ ảo hóa phần cứng (lệnh phải dẫn đến một 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:
    sudo apt install cpu-checker
    kvm-ok
    
    Đầu ra phải là:
    INFO: /dev/kvm exists
    KVM acceleration can be used
    
  6. Để cài đặt Node.js và Node Packet Manager (NPM):
    sudo apt install nodejs npm
    

Khởi động các vùng chứa được lưu trữ

  1. Để xác minh 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ể tìm thấy thông tin chi tiết về các thùng chứa tại đây . Bây giờ bạn có thể chạy các vùng chứa này mà không cần xây dựng chúng. 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 kéo vùng chứa xuống (nếu vùng chứa không có sẵn tại địa phương) và khởi chạy nó.

  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
    
    Đầu ra phải là:
    List of devices attached
    localhost:5555 device
    

Thiết lập dịch vụ Trình giả lập AAOS

Để thiết lập dịch vụ Trình giả lập:

  1. Cài đặt tập lệnh vùng chứa Docker giả lập Android:
    git clone https://github.com/google/android-emulator-container-scripts.git
    
    cd android-emulator-container-script
    source ./configure.sh
    
  2. Điều này kích hoạt một môi trường ảo và làm cho emu-docker có thể thực thi được khả dụng. Để biết thông tin chi tiết về việc sử dụng nó, hãy khởi chạy nó:
    emu-docker -h
    
  3. Để tạo vùng chứa Docker, hãy chấp nhận các thỏa thuận cấp phép.
  4. Xây dựng vùng chứa AAOS Emulator Docker.
  5. Tải xuống bản dựng giả lập mới hơn phiên bản 7154743. Ví dụ:
    sdk-repo-linux-emulator-7154743.zip
    
  6. Tải xuống hình ảnh hệ thống giả lập AAOS. 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 Trình giả lập 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 giả lập AAOS! Sử dụng phần sau để truy cập nó trên trình duyệt web:

https://<VM_External__IP>

Xử lý 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 máy ảo được thiết lập để cho phép cả lưu lượng HTTP HTTPS. Để xác thực điều này, hãy xem Chạy máy chủ web Apache cơ bản .

Thiết lập máy chủ lần lượt

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

Lưu ý: Để làm cho máy chủ lần lượt hoạt động trên phiên bản Google Cloud VM, hãy đảm bảo định cấu hình quy tắc tường lửa VM để cho phép lưu lượng truy cập trên các 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 Docker Compose YAML để bao gồ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 trong phần trình giả lập:
         shm_size: 128M
         expose:
           - "8554"
    +    environment:
    +       - TURN=printf $SNIPPET
    
  5. Khởi động lại dịch vụ Trình giả lập AAOS với cấu hình lần lượt. Đảm bảo thay thế IP máy chủ lần lượt, tên người dùng và thông tin đăng nhập bên dưới bằng 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