این صفحه نحوه اجرای AAOS Emulator را به عنوان یک وب سرویس و اجرای آن در یک مرورگر وب برای دسترسی از راه دور برای کاربران شرح می دهد. انجام این کار از طریق موتور محاسبات ابری Google یک مرجع سرتاسر و حداقل قابل دوام را فراهم می کند. با این حال، شما می توانید از این سرویس بر روی هر پلتفرم ابری عمومی یا خصوصی مورد نظر خود استفاده کنید.
هدف
این پیکربندی و راهاندازی متمرکز، شبیهساز AAOS را برای کل شرکت، تامینکننده و توسعهدهندگان کار از خانه در دسترس قرار میدهد. انجام این کار مدیریت و ارتقای شبیهساز AAOS را به نسخههای جدید کارآمدتر میکند و زمان لازم برای راهاندازی و مدیریت ماشینهای محلی را برای تک تک کاربران حذف میکند. این راه حل استفاده از منابع سخت افزاری را بهینه می کند و محیط توسعه اپلیکیشن با هزینه کمتر را امکان پذیر می کند. به عنوان مثال، برای اهداف:
- تحقیق کاربر، بررسی تجربه کاربر، پشتیبانی مشتری و آموزش.
- نمایشهای نمایشی برای مشتریان بالقوه و در کانالهای فروش.
- برنامهها (از جمله ساختهای روزانه OEM HMI) را در مقیاس آزمایش، اعتبارسنجی و حتی اشکالزدایی کنید. شبیه ساز را جایگزینی برای میزهای آزمایشی در نظر بگیرید که برای توسعه برنامه ها استفاده می کنند.
- نمایندگان مرکز تماس مشتریان OEM دارای رابط کاربری HU یکنواخت و با دسترسی آسان هستند.
مزایای استفاده از شبیه ساز AAOS بسیار زیاد است:
- از یک اسکریپت راه اندازی برای ایجاد یک شبیه ساز AAOS سفارشی و مبتنی بر ابر (شبیه ساز ابر) استفاده کنید.
- یک تصویر AAOS Cloud Emulator سفارشی برای نمونه های VM بسازید:
- آماده راه اندازی یک شبیه ساز مبتنی بر ابر.
- تصاویر عمومی AAOS AVD در دسترس خالق سرویس برای شروع یک AAOS AVD با یک فرمان. به عنوان مثال، تصاویر عمومی OEM AVD به عنوان نمونه هایی برای شرکا برای تطبیق و اعمال.
معماری
معماری مثال شبیه ساز ابری در زیر نشان داده شده است. اولین سرویس حداقل قابل دوام شما با افزودن تصاویر OEM AVD خود کار خواهد کرد.
شکل 1. معماری Cloud AVD.
بلوک های اصلی شبیه ساز عبارتند از:
مورد | هدف |
---|---|
شبیه ساز اندروید | نمونه شبیه ساز میزبان تصاویر AVD است |
پل ماهی قرمز-webrtc | برنامه لینوکس برای برقراری ارتباط بین برنامه react و شبیه ساز AAOS |
android-emulator-webrtc | برنامه React برای نمایش رابط کاربری Emulator در یک مرورگر وب. React همچنین رویدادهای ورودی کاربر را ضبط می کند و آنها را به سرور ارسال می کند. |
اسکریپت های کانتینر شبیه ساز اندروید | اسکریپت های پایتون برای مدیریت و ایجاد تصاویر و کانتینرهای Docker برای ماژول های نرم افزار فوق. |
توکن هایی را برای مدیریت مجوزهای دسترسی شبیه ساز تولید می کند. | |
سرور را روشن کنید | یک ارتباط مستقیم WebRTC بین مشتری و سرور برقرار می کند. تبدیل سرور فقط زمانی مورد نیاز است که سرویس شبیه ساز پشت فایروال ها یا پراکسی ها اجرا شود. |
فرستاده | یک سرویس پروکسی برای:
|
شبیه ساز را روی ماشین مجازی ابری راه اندازی کنید
برای ایجاد یک پروژه GCP:
- به Google Cloud Console بروید و یک پروژه را انتخاب کنید .
- برای تأیید اینکه صورتحساب برای پروژه Google Cloud شما فعال است، به فعال کردن، غیرفعال کردن یا تغییر صورتحساب برای پروژه مراجعه کنید.
- API را فعال کنید .
یک VM لینوکس در GCE ایجاد کنید
1. مجازی سازی تودرتو را فعال کنید
به طور پیش فرض، مجازی سازی تودرتو در سطح پروژه، پوشه یا سازمان مجاز است. مگر اینکه شخصی در سازمان شما مجازی سازی تودرتو را غیرفعال کرده باشد، لازم نیست کاری برای فعال کردن آن انجام دهید.
- از ابزار خط فرمان gcloud برای تأیید مجاز بودن مجازیسازی تودرتو استفاده کنید:
gcloud beta resource-manager org-policies describe \ constraints/compute.disableNestedVirtualization --effective --project=[PROJECT_ID]
2. یک دیسک قابل بوت Ubuntu-1804-lts ایجاد کنید
- به Cloud Console بروید.
- پروژه GCP را انتخاب کنید.
- به منوی ناوبری بروید و Compute Engine > Disks > Create Disk را انتخاب کنید.
- نام دیسک را ارائه دهید. به عنوان مثال،
ubuntu1804lts
- یک منطقه و منطقه را انتخاب کنید. برای پشتیبانی از مجازی سازی تودرتو، مطمئن شوید که منطقه و منطقه ای که انتخاب می کنید از پردازنده های Haswell (یا جدیدتر) پشتیبانی می کند. برای کسب اطلاعات بیشتر، به مناطق و مناطق مراجعه کنید.
- تصویر منبع
ubuntu-1804-bionic-v20210211
را انتخاب کنید - اندازه دیسک مناسب را تنظیم کنید (100 گیگابایت یا بیشتر توصیه می شود).
- نام دیسک را ارائه دهید. به عنوان مثال،
شکل 2. دیسک قابل بوت اوبونتو ایجاد کنید.
3. یک تصویر سفارشی با کلید مجوز ویژه برای فعال کردن VMX ایجاد کنید
- به کنسول Cloud بروید.
- یک Cloud Shell را باز کنید و از دستور زیر استفاده کنید:
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"
- نام تصویر را وارد کنید. به عنوان مثال،
aaos-emulator-image
- Disk Zone را روی منطقه ای که دیسک را در آن ایجاد کرده اید تنظیم کنید.
- نام دیسک را روی نامی که برای ایجاد دیسک استفاده کردید تنظیم کنید.
به عنوان مثال:
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"
- نام تصویر را وارد کنید. به عنوان مثال،
برای جزئیات، به نمونه مجازی سازی تودرتو VM مراجعه کنید.
4. یک نمونه VM با استفاده از تصویر سفارشی ایجاد کنید
- به Cloud Console بروید.
- پروژه GCP را انتخاب کنید.
- به منوی ناوبری > موتور محاسباتی > نمونه VM بروید.
شکل 3. یک نمونه VM ایجاد کنید.
- یک نام نمونه وارد کنید. به عنوان مثال،
aaosemulator
- خانواده دستگاه مورد نظر را انتخاب کرده و تایپ کنید. مطمئن شوید که دستگاه دارای چهار vCPU و 16 گیگابایت حافظه (یا بیشتر) است.
- پلتفرم CPU را به عنوان Intel Cascade Lake (یا جدیدتر) انتخاب کنید.
- دیسک بوت را به تصویر ایجاد شده در مرحله قبل تغییر دهید.
- فایروال را فعال کنید:
- ترافیک HTTP مجاز است
- ترافیک HTTPS مجاز است
5. فایروال را برای باز کردن پورت 80 و 443 پیکربندی کنید
- به Cloud Console بروید.
- پروژه GCP را انتخاب کنید.
- به منوی ناوبری > موتور محاسباتی > نمونه VM > تنظیم قانون دیوار آتش بروید.
نرم افزارهای مورد نیاز را روی ماشین مجازی نصب کنید
- Python 3 و Python3-env را نصب کنید:
sudo apt update sudo apt install python3 sudo apt-get install python3-venv
- Android SDK و ADB موجود در مسیر را نصب کنید.
sudo apt install android-sdk
برای نصب Docker و Docker-compose، Docker and Docker-compose را ببینید. مطمئن شوید که میتوانید این موارد را به عنوان کاربر غیر ریشه اجرا کنید.
- برای تأیید اینکه CPU از مجازیسازی سختافزار پشتیبانی میکند (دستور باید به عدد غیر صفر برسد):
egrep -c '(vmx|svm)' /proc/cpuinfo
- ماشین مجازی Kernel (KVM) را نصب کنید. برای نصب KVM، اجرا کنید:
sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
- برای تأیید اینکه KVM کار می کند:
خروجی باید این باشد:sudo apt install cpu-checker kvm-ok
INFO: /dev/kvm exists KVM acceleration can be used
- برای نصب Node.js و Node Packet Manager (NPM):
sudo apt install nodejs npm
کانتینرهای میزبانی شده را راه اندازی کنید
- برای تأیید نصب، کانتینرهای شبیه ساز Android میزبانی شده را از مخزن عمومی اجرا کنید. شما می توانید جزئیات مربوط به ظروف را در اینجا بیابید. اکنون می توانید این کانتینرها را بدون ساختن آنها اجرا کنید. به عنوان مثال:
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
این کانتینر را پایین میکشد (اگر به صورت محلی در دسترس نباشد) و راهاندازی میکند.
- هنگامی که کانتینر راه اندازی می شود، با پیکربندی ADB به همان روشی که یک AVD در یک میزبان محلی متصل می شود، به دستگاه متصل شوید. به عنوان مثال:
خروجی باید این باشد:adb connect localhost:5555 adb devices
List of devices attached localhost:5555 device
سرویس AAOS Emulator را راه اندازی کنید
برای راه اندازی سرویس شبیه ساز:
- اسکریپت کانتینر Android Emulator Docker را نصب کنید:
git clone https://github.com/google/android-emulator-container-scripts.git
cd android-emulator-container-script source ./configure.sh
- این یک محیط مجازی را فعال می کند و emu-docker قابل اجرا را در دسترس قرار می دهد. برای دریافت اطلاعات دقیق در مورد استفاده از آن، آن را راه اندازی کنید:
emu-docker -h
- برای ایجاد کانتینرهای Docker، موافقت نامه های مجوز را بپذیرید.
- کانتینر AAOS Emulator Docker را بسازید.
- یک ساخت شبیه ساز را دیرتر از نسخه 7154743 دانلود کنید. به عنوان مثال:
sdk-repo-linux-emulator-7154743.zip
- تصویر سیستم شبیه ساز AAOS را دانلود کنید. به عنوان مثال،
sdk-repo-linux-system-images-7115454.zip
:emu-docker create <emulator-zip> <system-image-zip>
- کانتینرهای وب را ایجاد کنید و نام کاربری و رمز عبور را برای دسترسی از راه دور تنظیم کنید.
./create_web_container.sh -p user1,passwd1
- سرویس وب شبیه ساز AAOS را راه اندازی کنید:
docker-compose -f js/docker/docker-compose-build.yaml -f js/docker/development.yaml up
شما یک سرویس وب شبیه ساز AAOS را با موفقیت راه اندازی کردید! برای دسترسی به آن در مرورگر وب از موارد زیر استفاده کنید:
https://<VM_External__IP>
عیب یابی
اگر خطای اتصال به IP خارجی VM رخ داد، مطمئن شوید که VM طوری تنظیم شده است که ترافیک HTTP و HTTPS را مجاز کند. برای تأیید این موضوع، به اجرای یک وب سرور اصلی Apache مراجعه کنید.
سرور نوبت را راه اندازی کنید
شما همیشه می توانید از سرور نوبتی خود استفاده کنید. در زیر نمونه ای از یک نمونه Google Cloud VM ارائه شده است.
توجه: برای اینکه سرور نوبتی روی یک نمونه Google Cloud VM کار کند، حتماً قانون فایروال VM را برای اجازه دادن به ترافیک در پورتهای TCP و UDP 3478 و 3479 پیکربندی کنید.
- سرور coturn را نصب کنید:
sudo apt install coturn systemctl stop coturn echo "TURNSERVER_ENABLED=1"|sudo tee -a /etc/default/coturn
-
/etc/turnserver.conf
را با افزودن خطوط زیر تغییر دهید: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
- فایل Docker Compose YAML را طوری تغییر دهید که شامل پیکربندی TURN باشد:
cd android-emulator-container-script nano js/docker/docker-compose-build.yaml
- دو خط محیط زیر را در قسمت شبیه ساز اضافه کنید:
shm_size: 128M expose: - "8554" + environment: + - TURN=printf $SNIPPET
- سرویس AAOS Emulator را با پیکربندی نوبت راه اندازی مجدد کنید. مطمئن شوید که IP سرور نوبت، نام کاربری و اعتبار زیر را با خود جایگزین کنید:
export SNIPPET="{\"iceServers\":[{\"urls\":\"turn:35.193.52.134:3478\",\"username\":\"test\",\"credential\":\"test123\"}]}" docker-compose -f js/docker/docker-compose-build.yaml up