תחילת העבודה

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

בדיקת הזמינות של KVM

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

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

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

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

הדרך הישירה ביותר היא לבדוק את /dev/kvm:

find /dev -name kvm

הפעלת Cuttlefish

  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 Open Source Platform‏ (AOSP). גרסאות build של המכשיר הווירטואלי נמצאות באתר Android Continuous Integration. כדי למצוא אינדקס של כל גרסאות ה-build של Android, עוברים לאתר Android Continuous Integration בכתובת http://ci.android.com/.

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

  4. עוברים ליעד ה-build‏ aosp_cf_x86_64_phone ולוחצים על userdebug כדי לקבל את ה-build האחרון.

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

  6. בחלונית Artifacts, מורידים את הארטיפקטים של Cuttlefish.

    1. לוחצים על הארטיפקט 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
    

מוודאים ש-Cuttlefish גלוי דרך adb

בדומה למכשיר פיזי, אפשר לראות את Cuttlefish דרך ממשק הגישור של Android‏ (adb).

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

./bin/adb devices

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

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

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

למידע נוסף, ראו Cuttlefish: WebRTC Streaming.

הפסקת Cuttlefish

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

HOME=$PWD ./bin/stop_cvd