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 nó trong trình duyệt web để giúp người dùng có thể truy cập từ xa. Làm như vậy sẽ cung cấp tham chiếu từ đầu đến cuối, khả thi ở mức tối thiểu thông qua Google Cloud Computing Engine . Điều đó có nghĩa là 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ấu hình và 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 Trình mô phỏng AAOS. Làm như vậy sẽ giúp quản lý và nâng cấp AAOS Emulator lên 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 hóa việc sử dụng tài nguyên phần cứng và tạo ra môi trường phát triển ứng dụng với chi phí thấp hơn. Ví dụ: vì 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 mô phỏng là một giải pháp thay thế cho 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.

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 mô phỏng AAOS (trình mô phỏng đám mây) tùy chỉnh và dựa trên đá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:
    • Thiết lập sẵn sàng trình mô phỏng 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 lệnh. Ví dụ: hình ảnh OEM AVD công khai làm mẫu để đố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ụ mô phỏng đá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 OEM AVD 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 mô phỏng chính là:

đây .
Mục Mục đích
Trình giả lập Android Phiên bản trình mô phỏng lưu trữ hình ảnh AVD
Cầu cá vàng-webrtc Ứng dụng Linux để cung cấp liên lạc giữa ứng dụng phản ứng và Trình mô phỏng AAOS
trình giả lập android-webrtc Ứng dụng React để hiển thị Giao diện người dùng Trình mô phỏng trong trình duyệt web. React cũng ghi lại 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 mô phỏng Android Các tập lệnh Python để quản lý và tạo hình ảnh và 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 máy khách và máy chủ. Máy chủ bật chỉ được yêu cầu khi dịch vụ Trình mô phỏng chạy phía sau tường lửa hoặc proxy.
sứ giả

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 truy cập 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 mô phỏng.
  • Chuyển hướng các yêu cầu khác đến thành phần Nginx, nơi lưu trữ ứng dụng React.

Thiết lập trình mô phỏng trên máy ảo đám mây

Để tạo dự án GCP:

  1. Đi tới Google Cloud Console và chọn 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. Kích hoạt API .

Tạo máy ảo Linux trong GCE

1. Kích hoạt ảo hóa lồng nhau

Theo mặc định, ảo hóa lồng nhau được cho 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 tính năng ảo hóa lồng nhau , bạn không cần phải làm gì để kích hoạ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 cho 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. Chuyển đến 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 một khu vực và khu vực. Để 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 dùng 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 mã 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 Vùng đĩa 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 VM ảo hóa lồng nhau .

4. Tạo phiên bản VM bằ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 > Công cụ Điện toán > 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 họ và loại máy mong muốn. Đảm bảo máy có bốn vCPU và bộ nhớ 16 GB (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 image đã tạo ở bước trước.
  8. Kích hoạt Tường lửa cho:
    • Cho phép lưu lượng HTTP
    • Cho phép lưu lượng truy cập 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 > Công cụ Điện toán > 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-compose, hãy xem DockerDocker-compose . Đảm bảo bạn có thể chạy những thứ này 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 sẽ dẫn đến số khác 0):
    egrep -c '(vmx|svm)' /proc/cpuinfo
    
  4. Cài đặt máy ảo hạt 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. Để 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à Trình quản lý gói Node (NPM):
    sudo apt install nodejs npm
    

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

  1. Để xác minh cài đặt, hãy chạy vùng chứa Trình mô phỏng Android được lưu trữ từ kho lưu trữ công cộng. Bạn có thể tìm thấy thông tin chi tiết về các container ở đâ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 sẽ kéo vùng chứa xuống (nếu nó 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
    
    Kết quả đầu ra phải là:
    List of devices attached
    localhost:5555 device
    

Thiết lập dịch vụ AAOS Emulator

Để 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. Điều này sẽ kích hoạt một môi trường ảo và làm cho emu-docker có thể thực thi được. Để 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 Docker của Trình mô phỏng AAOS.
  5. Tải xuống bản dựng trình mô phỏng muộn 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 Bộ 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 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 giả lập AAOS! Sử dụng cách 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 VM, hãy đảm bảo VM đượ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ượt

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

Lưu ý: Để làm cho máy chủ 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 YAML 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 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 với cấu hình lần lượt. Đảm bảo thay thế IP máy chủ, tên người dùng và thông tin xác thực bên dưới bằng thông tin xác thực 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