قم ببناء محاكي السحابة الخاص بك

توضح هذه الصفحة كيفية تشغيل 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 مباشر بين العميل والخادم. يعد تشغيل الخادم مطلوبًا فقط عندما يتم تشغيل خدمة المحاكي خلف جدران الحماية أو الوكلاء.
مبعوث

خدمة الوكيل إلى:

  • قم بتوفير HTTPS باستخدام شهادة موقعة ذاتيًا.
  • إعادة توجيه حركة المرور على المنفذ 80 (http) إلى المنفذ 443 (https).
  • العمل كوكيل gRPC للمحاكي.
  • تحقق من الرموز المميزة للسماح بالوصول إلى نقطة نهاية gRPC للمحاكي.
  • أعد توجيه الطلبات الأخرى إلى مكون Nginx، الذي يستضيف تطبيق React.

قم بإعداد المحاكي على VM السحابي

لإنشاء مشروع Google Cloud Platform:

  1. انتقل إلى Google Cloud Console وحدد مشروعًا .
  2. للتأكد من تمكين الفوترة لمشروع Google Cloud الخاص بك، راجع تمكين الفوترة أو تعطيلها أو تغييرها لمشروع ما .
  3. تمكين واجهة برمجة التطبيقات .

قم بإنشاء Linux VM في GCE

1. تمكين المحاكاة الافتراضية المتداخلة

افتراضيًا، يُسمح بالمحاكاة الافتراضية المتداخلة على مستوى المشروع أو المجلد أو المؤسسة. ما لم يقم أحد الأشخاص في مؤسستك بتعطيل المحاكاة الافتراضية المتداخلة ، فلن تحتاج إلى القيام بأي شيء لتمكينها.

  1. استخدم أداة سطر الأوامر gcloud للتأكد من السماح بالمحاكاة الافتراضية المتداخلة:
    gcloud beta resource-manager org-policies describe   \
      constraints/compute.disableNestedVirtualization  --effective --project=[PROJECT_ID]
    

2. قم بإنشاء قرص قابل للتمهيد Ubuntu-1804-lts

  1. انتقل إلى وحدة التحكم السحابية .
  2. حدد مشروع Google Cloud Platform.
  3. انتقل إلى قائمة التنقل وحدد Compute Engine > Disks > Create Disk .
    1. توفير اسم القرص. على سبيل المثال، ubuntu1804lts
    2. حدد المنطقة والمنطقة. لدعم المحاكاة الافتراضية المتداخلة، تأكد من أن المنطقة والمنطقة التي تحددها تدعم معالجات Haswell (أو الأحدث). لمعرفة المزيد، راجع المناطق والمناطق .
    3. حدد الصورة المصدر لـ ubuntu-1804-bionic-v20210211
    4. قم بتعيين حجم القرص المناسب (يوصى بـ 100 جيجابايت أو أكبر).

الشكل 2. إنشاء قرص Ubuntu قابل للتمهيد.

3. قم بإنشاء صورة مخصصة باستخدام مفتاح ترخيص خاص لتمكين VMX

  1. انتقل إلى وحدة التحكم السحابية .
  2. افتح 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 باستخدام الصورة المخصصة

  1. انتقل إلى وحدة التحكم السحابية .
  2. حدد مشروع Google Cloud Platform.
  3. انتقل إلى قائمة التنقل > محرك الحساب > مثيل VM.

    الشكل 3. إنشاء مثيل VM.

  4. أدخل اسم المثيل. على سبيل المثال، aaosemulator
  5. حدد عائلة الجهاز المطلوب واكتبه. تأكد من أن الجهاز يحتوي على أربع وحدات معالجة مركزية افتراضية (vCPUs) وذاكرة بسعة 16 جيجابايت (أو أكثر).
  6. حدد النظام الأساسي لوحدة المعالجة المركزية ليكون Intel Cascade Lake (أو الأحدث).
  7. قم بتغيير قرص التمهيد إلى الصورة التي تم إنشاؤها في الخطوة السابقة.
  8. تمكين جدار الحماية لـ:
    • السماح بحركة مرور HTTP
    • السماح بحركة مرور HTTPS

5. قم بتكوين جدار الحماية لفتح المنفذ 80 و443

  1. انتقل إلى وحدة التحكم السحابية .
  2. حدد مشروع Google Cloud Platform.
  3. انتقل إلى قائمة التنقل > محرك الحساب > مثيل VM > إعداد قاعدة جدار الحماية.

قم بتثبيت البرنامج المطلوب على VM

  1. قم بتثبيت Python 3 وPython3-env:
    sudo apt update
    sudo apt install python3
    sudo apt-get install python3-venv
    
  2. قم بتثبيت Android SDK وADB المتوفرين على المسار.
    sudo apt install android-sdk
    

    لتثبيت Docker وDocker-compose، راجع Docker و Docker-compose . تأكد من أنه يمكنك تشغيل هذه الملفات كمستخدم غير جذر .

  3. للتأكد من أن وحدة المعالجة المركزية تدعم المحاكاة الافتراضية للأجهزة (يجب أن يؤدي الأمر إلى رقم غير الصفر):
    egrep -c '(vmx|svm)' /proc/cpuinfo
    
  4. قم بتثبيت الجهاز الظاهري Kernel (KVM). لتثبيت KVM، قم بتشغيل:
    sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
    
  5. للتحقق من عمل KVM:
    sudo apt install cpu-checker
    kvm-ok
    
    يجب أن يكون الإخراج:
    INFO: /dev/kvm exists
    KVM acceleration can be used
    
  6. لتثبيت Node.js وNode Packet Manager (NPM):
    sudo apt install nodejs npm
    

ابدأ تشغيل الحاويات المستضافة

  1. للتحقق من التثبيت، قم بتشغيل حاويات 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
    

    يؤدي هذا إلى سحب الحاوية (إذا لم تكن متوفرة محليًا) وتشغيلها.

  2. عند تشغيل الحاوية، قم بالاتصال بالجهاز عن طريق تكوين ADB بنفس طريقة توصيل AVD على مضيف محلي. على سبيل المثال:
    adb connect localhost:5555
    adb devices
    
    يجب أن يكون الإخراج:
    List of devices attached
    localhost:5555 device
    

قم بإعداد خدمة محاكي AAOS

لإعداد خدمة المحاكي:

  1. قم بتثبيت البرنامج النصي لحاوية Android Emulator Docker:
    git clone https://github.com/google/android-emulator-container-scripts.git
    
    cd android-emulator-container-script
    source ./configure.sh
    
  2. يؤدي هذا إلى تنشيط بيئة افتراضية وإتاحة وحدة الإرساء emu القابلة للتنفيذ. للحصول على معلومات مفصلة حول استخدامه، قم بتشغيله:
    emu-docker -h
    
  3. لإنشاء حاويات Docker، اقبل اتفاقيات الترخيص.
  4. قم ببناء حاوية AAOS Emulator Docker.
  5. قم بتنزيل إصدار المحاكي الأحدث من الإصدار 7154743. على سبيل المثال:
    sdk-repo-linux-emulator-7154743.zip
    
  6. قم بتنزيل صورة نظام محاكي AAOS. على سبيل المثال، sdk-repo-linux-system-images-7115454.zip :
    emu-docker create <emulator-zip> <system-image-zip>
    
  7. قم بإنشاء حاويات الويب وقم بتعيين اسم المستخدم وكلمة المرور للوصول عن بعد.
    ./create_web_container.sh -p user1,passwd1
    
  8. ابدأ تشغيل خدمة ويب محاكي 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.

  1. قم بتثبيت خادم coturn:
    sudo apt install coturn
    systemctl stop coturn
    echo "TURNSERVER_ENABLED=1"|sudo tee -a /etc/default/coturn
    
  2. قم بتعديل /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
    
  3. قم بتعديل ملف Docker Compose YAML ليشمل تكوين TURN:
    cd android-emulator-container-script
    nano  js/docker/docker-compose-build.yaml
    
  4. أضف سطري البيئة التاليين في قسم المحاكي:
         shm_size: 128M
         expose:
           - "8554"
    +    environment:
    +       - TURN=printf $SNIPPET
    
  5. أعد تشغيل خدمة 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