מכשיר Android וירטואלי (AVD) כפלטפורמת פיתוח

כדי להשתמש במכשירים וירטואליים של Android‏ (AVD), Android Emulator תומך בממשק משתמש גרפי (GUI) ובממשק שורת פקודה (CLI). בוחרים את תהליך העבודה האופטימלי לסביבה שלכם.

הפעלת AVD של AOSP Car באמצעות קובץ build מוגדר מראש

כדי להפעיל ולבדוק במהירות באמצעות AOSP Car AVD שנוצר מראש, משתמשים בסקריפט בקוד פתוח כדי להוריד ולהפעיל גרסה של אמולטור מ-ci.android.com. הסקריפט נבדק ב-macOS וב-Linux.

כדי להשתמש בסקריפט הזה, צריך Curl.

כדי להריץ את הסקריפט:

  1. מעתיקים את תוכן הסקריפט launch_emu.sh לקובץ המקומי, בהנחה שמשתמשים ב-launch_emu.sh בתור שם הקובץ המקומי.
  2. הופכים את הסקריפט המקומי לניתן להפעלה. לדוגמה, מריצים את הפקודה chmod +x ./launch_emu.sh.
  3. כדי לבדוק את האפשרויות הזמינות, מריצים את הסקריפט באמצעות ./launch_emu.sh -h.
  4. ב-ci.android.com, עוברים להסתעפות aosp-main-throttled ובוחרים גרסה זמנית (build) עדכנית שבה הערך של sdk_car_x86_64 ירוק. לדוגמה, 11370359. אם פרטי הגרסה לא מופיעים, יוצאים מחשבון Google ומנסים שוב.
  5. מורידים ומתקינים את הקבצים הבינאריים הרלוונטיים לאמולטור עם מזהה ה-build. לדוגמה, ./launch_emu.sh -i -a 11370359.
  6. לאחר מכן, תוכלו להשתמש ב-./launch_emu.sh כדי להפעיל את הסימולטור שהורדתם והתקנתם (אל תשתמשו באפשרויות -i או -a).
  7. כדי להוריד ולהתקין מזהה build אחר, מריצים את הפקודה ./launch_emu.sh -c כדי לנקות את סביבת העבודה, ואז חוזרים על שלבים 4 ו-5 שלמעלה.

כדי לציין את האפשרויות של Command-line startup options במהלך הפעלת הסימולטור של Android, משתמשים באפשרות -v. לדוגמה:

  ./launch_emu.sh -v “-cores 4 -memory 6144 -no-snapshot"

פיתוח AVD לרכב ב-AOSP

התהליך ליצירת AVD של AOSP Car דומה ליצירת קובצי אימג' של AVD לטלפון (לדוגמה, aosp_car_x86_64):

  1. במאמר כלים לניהול גרסאות מוסבר איך מגדירים את סביבת הפיתוח ומזהים הסתעפות. לאחר מכן, קוראים את המאמר הורדת המקור:
    ANDROID_BRANCH="android12L-release"
    REPO_URL="https://android.googlesource.com/platform/manifest"
    mkdir $ANDROID_BRANCH && cd $ANDROID_BRANCH && repo init -u $REPO_URL -b $ANDROID_BRANCH --partial-clone && repo sync -c -j8
  2. יוצרים את קובץ האימג' של ה-AVD:
    . build/envsetup.sh && lunch sdk_car_x86_64-userdebug && m -j32
  3. מריצים את קובץ האימג' של AVD (מוסיפים אפשרויות נוספות להפעלה בשורת הפקודה לפי הצורך):
    emulator &

    לדוגמה:

    איור 1. המסך של Android Virtual Emulator

    הערות לגבי התהליך הזה:

    • תהליך ה-build זהה לתהליך הנדרש ליצירת Android למכשיר פיזי, לכן צריך להמתין זמן מה עד להורדת המקור ואז ליצירתו.
    • כדי לעבוד על סניפים אחרים, מגדירים את $ANDROID_BRANCH לסניף/תג אחר.
    • קובצי אימג' של AVD, כמו system.img, נוצרים ב-$ANDROID_PRODUCT_OUT. מידע נוסף על קובצי אימג' של מפתחות זמין בספריית המערכת של AVD.
    • בקובץ README מוסבר איך משתמשים בקובצי ה-binary של הסימולטור שנוצרו מראש בעץ Android כדי להריץ את הסימולטור.

יצירת AVD לרכב

הוספת AVD חדש לרכב דומה כמעט להוספת מכשיר חדש. לדוגמה, הערך 1660554 יוצר מכונה וירטואלית חדשה מסוג AVD ב-avd_car.

כדי ליצור AVD לרכב:

  1. יוצרים תיקייה של החברה ותיקייה של המכשיר לפי הצורך. בדוגמה הזו נעשה שימוש ב-$ANDROID_BUILD_TOP/device/google_car/avd_car.
  2. יוצרים את קובץ ה-makefile של המוצר, avd_car.mk, שמגדיר את אופן ה-build של ה-AVD.
  3. יוצרים תיקיית מכשיר, avd_car_device, שבה יאוחסנו BoardConfig.mk ו-source.properties.
  4. מוסיפים את האפשרות החדשה makefile ואת האפשרות החדשה lunch ל-AndroidProducts.mk.
  5. כדי ליצור ולהריץ את ה-AVD החדש של avd_car:
    . build/envsetup.sh && lunch acar-userdebug && m -j32 && emulator &
עכשיו אתם מוכנים ליצור אב-טיפוס של רוב התכונות של HMI והאפליקציה במכונה הווירטואלית החדשה של Android.

אריזה של קובץ ZIP של קובץ אימג' של AVD

אתם יכולים לארוז ולשתף את ה-AVD עם אחרים או להשתמש בו במחשב אחר. משתמשים ב-emu_img_zip.mk כדי ליצור את קובץ ה-zip של קובץ האימג' של AVD:

  1. אחרי יצירת ה-AVD, מגדירים את emu_img_zip כיעד:
    m emu_img_zip
  2. קובץ ה-ZIP של קובץ האימג' של AVD, עם התחילית sdk-repo-linux-system-images, נוצר בתיקייה בשם $ANDROID_PRODUCT_OUT.

פיתוח ליבה של AVD

ליבות AVD דומות לליבות אחרות של Android, כי כולן הן תמונות שנוצרו מראש. בדרך כלל, אפשר להשתמש בתמונות המוכנות מראש של הליבה הרגילה של goldfish כפי שהן מכל גרסה של Android.

כדי להתנסות בשינויים בליבה:

  1. מריצים את סדרת ההוראות הבאה:
    mkdir goldfish-kernel-54
    cd goldfish-kernel-54
    repo init -u https://android.googlesource.com/kernel/manifest -b
    common-android11-5.4
    repo sync
    BUILD_CONFIG=common/build.config.gki.x86_64 build/build.sh
    BUILD_CONFIG=common-modules/virtual-device/build.config.goldfish.x86_64
    build/build.sh
    ls -l ./out/android11-5.4/dist/
  2. מחליפים את הקובץ הבינארי של הליבה בקוד המקור בהתאם לקובץ ה-makefile של AVD. לדוגמה, הערך x86_64-vendor.mk כולל את הערך x86_64-kernel.mk.

קוד הליבה והתצורה נמצאים במיקומים הבאים:

פריט ערך
סניף common-android11-5.4 (משמש ב-Android 11)
מניפסט kernel/manifest/common-android11-5.4
common-modules/virtual-device kernel/common-modules/virtual-device/android11-5.4
בועה kernel/common/android11-5.4

יצירת פרופיל מכשיר חדש

במאמר יצירה וניהול של מכשירי וירטואליים מוסבר איך לאפשר למשתמשים ליצור מכשיר וירטואלי ספציפי ב-AVD Manager של Android Studio. יצרני המכשירים יכולים להגדיר את מפרטי החומרה שלהם, כמו גודל המסך ו-DPI, באמצעות קובץ devices.xml שכלול בתמונת ה-AVD.

  • לדוגמה, אפשר לעיין בפרופילים של 'מכשירי רכב' בקטע automotive.xml.
  • לפיתוח או ליצירת אב טיפוס של HMI, אפשר להוסיף כמה מכשירים לקובץ של אותה קובץ אימג' של AVD.
  • כוללים את הקובץ בקובץ ה-ZIP של קובץ האימג' של OEM AVD בתיקייה [ABI]. לדוגמה, כ-x86_64.
  • יצרני מכשירים יכולים גם ליצור עיצוב של אמולטור. לדוגמה, כדי להגדיר לחצני חומרה נוספים לשיפור חוויית המשתמש. האפשרות הזו שימושית לא רק לתהליכי עבודה של מפתחים, אלא גם למשימות אחרות כמו מחקר וחקר UX.

יצירת קובץ ה-XML של קובץ האימג' של AVD

יצרני המכשירים יכולים ליצור קובץ XML של תמונה של AVD כדי ש-Android Studio יוכל להוריד אותו.

  • לדוגמה, קובץ ה-XML של קובץ האימג' של AAOS AVD, ‏ sys-img2-1.xml.
  • יצרני המכשירים יכולים להגדיר הסכם רישיון משלהם ל-OEM AVD למשתמשים היעד שלהם (באמצעות מערכת של 'כבוד המערכת'), באמצעות הרישיון ל-Android Emulator. כשמצרפים רישיון כזה, מערכת Android Studio מקבלת הסכמה מהמשתמשים.

כדי ליצור את התמונה:

  1. מכינים קובץ ZIP של קובץ אימג' של AVD.
  2. פותחים את הקובץ ${ANDROID_PRODUCT_OUT}/sdk-repo-linux-system-images-*.zip.
  3. מוסיפים את devices.xml לתיקייה x86_64 ואז דוחסים את הקובץ לקובץ ZIP. לדוגמה, כ-oem_avd_img_x86_64.zip.
  4. מעדכנים את oem-sys-img2-1.xml.
  5. מעדכנים את השם, הגודל וה-shasum של קובץ ה-zip (קובצי XML לדוגמה זמינים בקובץ tools).

לדוגמה, כדי לארח את ה-AVD ב-Cloud Storage של Google, תוכלו לעיין במאמר יצירת קטגוריות אחסון.

במאמר הגדרת נתונים כציבוריים מוסבר איך להעלות את ה-AVD ולהגדיר אותו כגלוי לכולם:

BUCKET_NAME="aaos-avd"
gsutil mb gs://$BUCKET_NAME
gsutil cp oem_avd_img_x86_64.zip gs://$BUCKET_NAME
gsutil cp oem-sys-img2-1.xml gs://$BUCKET_NAME
gsutil iam ch allUsers:objectViewer gs://$BUCKET_NAME

הפורמט של כתובת ה-URL של התוסף ל-SDK של קובץ האימג' של AVD הוא: https://storage.googleapis.com/$BUCKET_NAME/oem-sys-img2-1.xml. לדוגמה, אם הערך של BUCKET_NAME הוא aaos-avd, כתובת ה-URL היא: https://storage.googleapis.com/aaos-avd/oem-sys-img2-1.xml.

שיתוף קובץ אימג' של AVD עם משתמשי Android Studio

כדי שהמשתמשים יוכלו להוריד קובצי אימג' של AVD ולהשתמש ב-AVD שלכם באמצעות Android Studio, תוכלו לספק קובץ XML של תוסף SDK. פרטים נוספים זמינים במאמר עדכון הכלים של IDE ו-SDK.

כדי להוריד את ה-AVD מהרשת:

  1. מארחים את קובץ ה-zip של התמונות ואת קובצי ה-XML בשרת.
  2. מספקים את כתובת ה-URL למשתמשים היעד.
  3. (אופציונלי) מגבילים את הגישה לפי שם משתמש וסיסמה.

לחלופין, כדי לזרז את הפיתוח, אפשר להוריד את ה-AVD לספרייה מקומית:

  1. שומרים את קובצי ה-XML ואת כל הארטיפקטים שצוינו בקובץ ה-XML בתיקייה בשם ADDON_DIR (לדוגמה, כל קובצי ה-ZIP של קובצי האימג' של AVD).
  2. מציינים את כתובת ה-URL כ-file://$ADDON_DIR/oem-sys-img2-1.xml.