אני רוצה לנסות

בדף הזה נסביר איך להשיק גרסת build של AOSP באמצעות דג דיונון.

אימות הזמינות של KVM

דיונון הוא מכשיר וירטואלי והוא תלוי בווירטואליזציה זמין במכונה המארחת.

בטרמינל במכונה המארחת, מוודאים שהווירטואליזציה באמצעות אפשר להשתמש במכונה וירטואלית מבוססת-ליבה (KVM):

grep -c -w "vmx\|svm" /proc/cpuinfo

הפקודה הזו אמורה להחזיר ערך שאינו אפס.

כשמריצים במחשב ARM64, הדרך הישירה ביותר היא לבדוק /dev/kvm:

find /dev -name kvm

הפעלת דיונון

  1. בחלון הטרמינל, מורידים, יוצרים ומתקינים את חבילות Debian המארחות:

    sudo apt install -y git devscripts equivs config-package-dev debhelper-compat golang curl
    git clone https://github.com/google/android-cuttlefish
    cd android-cuttlefish
    tools/buildutils/build_packages.sh
    sudo dpkg -i ./cuttlefish-base_*_*64.deb || sudo apt-get install -f
    sudo dpkg -i ./cuttlefish-user_*_*64.deb || sudo apt-get install -f
    sudo usermod -aG kvm,cvdnetwork,render $USER
    sudo reboot
    

    ההפעלה מחדש מפעילה התקנה של מודולים ליבה נוספים ומחילה את udev כללים.

  2. Cuttlefish הוא חלק מפלטפורמת הקוד הפתוח של Android (AOSP). מבנים של המכשיר הווירטואלי נמצאים באתר של Android CI. שפת תרגום כדי למצוא אינדקס של כל גרסאות ה-build של Android, עוברים אל אתר השילוב ב- http://ci.android.com/.

  3. צריך להזין שם סניף. אפשר להשתמש בהסתעפות aosp-main שמוגדרת כברירת מחדל או להשתמש הסתעפות של תמונת מערכת גנרית (GSI) כמו aosp-android13-gsi.

  4. מנווטים אל יעד ה-build aosp_cf_x86_64_phone ולוחצים userdebug בשביל ה-build האחרון.

  5. כדי לבחור את ה-build הזה, לוחצים על התיבה הירוקה שמתחת ל-userdebug. פרטים תופיע עם מידע נוסף ספציפי לגבי גרסת ה-build הזאת. בחלונית הזו לוחצים על Artifact כדי לראות רשימה של כל ארטיפקטים המצורפים ל-build הזה.

  6. בחלונית Artifacts, מורידים את פריטי המידע שנוצרו בתהליך הפיתוח (Artifact) בשביל דיונון.

    1. לוחצים על פריט המידע שנוצר בתהליך הפיתוח (Artifact) של aosp_cf_x86_64_phone-img-xxxxxx.zip עבור x86_64 או ארטיפקט aosp_cf_arm64_only_phone-xxxxxx.zip של ARM64, מכילה את תמונות המכשיר. בשם הקובץ, "xxxxxx" האם ה-build המזהה של המכשיר הזה.

    2. גוללים למטה בחלונית ומורידים את cvd-host_package.tar.gz. תמיד מורידים את חבילת המארח מאותו build כמו התמונות.

  7. במערכת המקומית, יוצרים תיקיית קונטיינרים ומחלצים את החבילות:

    1. ארכיטקטורת x86_64:

      mkdir cf
      cd cf
      tar -xvf /path/to/cvd-host_package.tar.gz
      unzip /path/to/aosp_cf_x86_64_phone-img-xxxxxx.zip
      

    2. ארכיטקטורת ARM64:

      mkdir cf
      cd cf
      tar -xvf /path/to/cvd-host_package.tar.gz
      unzip /path/to/aosp_cf_arm64_only_phone-img-xxxxxx.zip
      

  8. מפעילים את הדיונון:

    HOME=$PWD ./bin/launch_cvd --daemon
    

צריך לוודא שניתן לראות את הדיונון באמצעות adb

בדומה למכשיר פיזי, הדיונון נראה דרך Android Debug Bridge (adb).

באותה תיקייה שבה הפעלת את Cuttlefish, מריצים את הפקודה הבאה כדי לראות רשימה של כל מכשירי Android הזמינים באמצעות adb מחשב מארח:

./bin/adb devices

הצגה של המכשיר הווירטואלי באינטרנט ואינטראקציה איתו

כברירת מחדל, Cuttlefish מושקת עם --start_webrtc, וכך אפשר להפעיל WebView דרך יציאה 8443 במכונה המארחת.

כדי להציג את המכשירים הווירטואליים ולקיים איתם אינטראקציה, עוברים אל https://localhost:8443 בדפדפן האינטרנט.

מידע נוסף זמין במאמר הבא: Cuttlefish: WebRTC Streaming

עוצרים דיונון

עוצרים את המכשיר הווירטואלי באותה ספרייה שבה השתמשתם כדי להפעיל את המכשיר:

HOME=$PWD ./bin/stop_cvd