توضح هذه الصفحة كيفية تشغيل AAOS Emulator كخدمة ويب وتشغيله في متصفح الويب لجعله في متناول المستخدمين عن بعد. يؤدي القيام بذلك إلى توفير مرجع شامل وقابل للتطبيق إلى الحد الأدنى من خلال Google Cloud Compute Engine . ومع ذلك، يمكنك استخدام هذه الخدمة على أي منصة سحابية عامة أو خاصة من اختيارك.
غاية
هذا التكوين والإعداد المركزي يجعل AAOS Emulator متاحًا لشركة بأكملها وموردين ومطوري العمل من المنزل. يؤدي القيام بذلك إلى زيادة كفاءة إدارة وترقية محاكي AAOS إلى الإصدارات الجديدة ويقلل الوقت اللازم لإعداد الأجهزة المحلية وإدارتها للمستخدمين الفرديين. يعمل هذا الحل على تحسين استخدام موارد الأجهزة ويتيح بيئة تطوير تطبيقات منخفضة التكلفة. على سبيل المثال، لأغراض:
- بحث المستخدم ومراجعة تجربة المستخدم ودعم العملاء والتدريب.
- عروض توضيحية للعملاء المحتملين وفي قنوات المبيعات.
- اختبار التطبيقات والتحقق من صحتها وحتى تصحيح أخطائها (بما في ذلك إصدارات OEM HMI اليومية) على نطاق واسع. اعتبر المحاكي بديلاً لمقاعد الاختبار المستخدمة لتطوير التطبيقات.
- يتمتع وكلاء مركز اتصال عملاء OEM بواجهة مستخدم موحدة وسهلة الوصول.
فوائد استخدام محاكي AAOS عديدة:
- استخدم برنامجًا نصيًا للإعداد لإنشاء محاكي AAOS مخصص ومستند إلى السحابة (محاكي سحابي).
- أنشئ صورة AAOS Cloud Emulator مخصصة لمثيلات VM:
- إعداد جاهز لمحاكي قائم على السحابة.
- تتوفر صور AAOS AVD العامة لمنشئ الخدمة لبدء تشغيل AAOS AVD باستخدام أمر. على سبيل المثال، صور OEM AVD العامة كعينات للشركاء للتكيف والتطبيق.
بنيان
تم توضيح بنية مثال المحاكي السحابي أدناه. ستعمل خدمتك الأولى القابلة للتطبيق عن طريق إضافة صور OEM AVD الخاصة بك.
الشكل 1. بنية السحابة AVD.
اللبنات الأساسية للمحاكي هي:
غرض | غاية |
---|---|
محاكي أندرويد | يستضيف مثيل المحاكي صور AVD |
جسر السمكة الذهبية-webrtc | تطبيق Linux لتوفير الاتصال بين تطبيق التفاعل ومحاكي AAOS |
android-محاكي-webrtc | تطبيق React لعرض واجهة المستخدم الخاصة بالمحاكي في متصفح الويب. يلتقط React أيضًا أحداث إدخال المستخدم ويرسلها مرة أخرى إلى الخادم. |
البرامج النصية لحاوية محاكي Android | نصوص Python لإدارة وإنشاء صور وحاويات Docker لوحدات البرامج المذكورة أعلاه. |
يُنشئ الرموز المميزة لإدارة أذونات الوصول للمحاكي. | |
بدوره الخادم | يؤسس اتصال WebRTC مباشر بين العميل والخادم. يعد تشغيل الخادم مطلوبًا فقط عندما يتم تشغيل خدمة المحاكي خلف جدران الحماية أو الوكلاء. |
مبعوث | خدمة الوكيل إلى:
|
قم بإعداد المحاكي على VM السحابي
لإنشاء مشروع Google Cloud Platform:
- انتقل إلى Google Cloud Console وحدد مشروعًا .
- للتأكد من تمكين الفوترة لمشروع Google Cloud الخاص بك، راجع تمكين الفوترة أو تعطيلها أو تغييرها لمشروع ما .
- تمكين واجهة برمجة التطبيقات .
قم بإنشاء Linux VM في GCE
1. تمكين المحاكاة الافتراضية المتداخلة
افتراضيًا، يُسمح بالمحاكاة الافتراضية المتداخلة على مستوى المشروع أو المجلد أو المؤسسة. ما لم يقم أحد الأشخاص في مؤسستك بتعطيل المحاكاة الافتراضية المتداخلة ، فلن تحتاج إلى القيام بأي شيء لتمكينها.
- استخدم أداة سطر الأوامر gcloud للتأكد من السماح بالمحاكاة الافتراضية المتداخلة:
gcloud beta resource-manager org-policies describe \ constraints/compute.disableNestedVirtualization --effective --project=[PROJECT_ID]
2. قم بإنشاء قرص قابل للتمهيد Ubuntu-1804-lts
- انتقل إلى وحدة التحكم السحابية .
- حدد مشروع Google Cloud Platform.
- انتقل إلى قائمة التنقل وحدد Compute Engine > Disks > Create Disk .
- توفير اسم القرص. على سبيل المثال،
ubuntu1804lts
- حدد المنطقة والمنطقة. لدعم المحاكاة الافتراضية المتداخلة، تأكد من أن المنطقة والمنطقة التي تحددها تدعم معالجات Haswell (أو الأحدث). لمعرفة المزيد، راجع المناطق والمناطق .
- حدد الصورة المصدر لـ
ubuntu-1804-bionic-v20210211
- قم بتعيين حجم القرص المناسب (يوصى بـ 100 جيجابايت أو أكبر).
- توفير اسم القرص. على سبيل المثال،
الشكل 2. إنشاء قرص Ubuntu قابل للتمهيد.
3. قم بإنشاء صورة مخصصة باستخدام مفتاح ترخيص خاص لتمكين VMX
- انتقل إلى وحدة التحكم السحابية .
- افتح 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
- قم بتعيين منطقة القرص على المنطقة التي قمت بإنشاء القرص فيها.
- قم بتعيين اسم القرص إلى الاسم الذي استخدمته لإنشاء القرص.
على سبيل المثال:
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 باستخدام الصورة المخصصة
- انتقل إلى وحدة التحكم السحابية .
- حدد مشروع Google Cloud Platform.
- انتقل إلى قائمة التنقل > محرك الحساب > مثيل VM.
الشكل 3. إنشاء مثيل VM.
- أدخل اسم المثيل. على سبيل المثال،
aaosemulator
- حدد عائلة الجهاز المطلوب واكتبه. تأكد من أن الجهاز يحتوي على أربع وحدات معالجة مركزية افتراضية (vCPUs) وذاكرة بسعة 16 جيجابايت (أو أكثر).
- حدد النظام الأساسي لوحدة المعالجة المركزية ليكون Intel Cascade Lake (أو الأحدث).
- قم بتغيير قرص التمهيد إلى الصورة التي تم إنشاؤها في الخطوة السابقة.
- تمكين جدار الحماية لـ:
- السماح بحركة مرور HTTP
- السماح بحركة مرور HTTPS
5. قم بتكوين جدار الحماية لفتح المنفذ 80 و443
- انتقل إلى وحدة التحكم السحابية .
- حدد مشروع Google Cloud Platform.
- انتقل إلى قائمة التنقل > محرك الحساب > مثيل VM > إعداد قاعدة جدار الحماية.
قم بتثبيت البرنامج المطلوب على 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 و Docker-compose . تأكد من أنه يمكنك تشغيل هذه الملفات كمستخدم غير جذر .
- للتأكد من أن وحدة المعالجة المركزية تدعم المحاكاة الافتراضية للأجهزة (يجب أن يؤدي الأمر إلى رقم غير الصفر):
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 Emulator المستضافة من المستودع العام. يمكنك العثور على تفاصيل حول الحاويات هنا . يمكنك الآن تشغيل هذه الحاويات دون بنائها. على سبيل المثال:
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
لإعداد خدمة المحاكي:
- قم بتثبيت البرنامج النصي لحاوية Android Emulator Docker:
git clone https://github.com/google/android-emulator-container-scripts.git
cd android-emulator-container-script source ./configure.sh
- يؤدي هذا إلى تنشيط بيئة افتراضية وإتاحة وحدة الإرساء emu القابلة للتنفيذ. للحصول على معلومات مفصلة حول استخدامه، قم بتشغيله:
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