איך מגדירים שיפור מהירות באמצעות חומרה לאמולטור Android

האמולטור פועל בצורה הטובה ביותר אם הוא יכול להשתמש בחומרה של המחשב, כמו המעבד, ה-GPU והמודם, במקום לפעול כתוכנה בלבד. היכולת להשתמש בחומרה של המחשב כדי לשפר את הביצועים נקראת שיפור מהירות באמצעות חומרה.

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

  • האצת עיבוד גרפי לשיפור העיבוד של המסך
  • האצת מכונות וירטואליות (VM) לשיפור מהירות הביצוע

ברוב המחשבים, ההגדרה 'שיפור מהירות באמצעות חומרה' מופעלת כברירת מחדל. אם האפשרות הזו לא מופעלת במחשב שלכם, בדף הזה מוסבר איך להגדיר האצת גרפיקה ומכונה וירטואלית (VM) כדי לשפר את הביצועים של האמולטור.

הגדרת האצת הגרפיקה

מכשירי Android משתמשים בממשקי API של OpenGL for Embedded Systems‏ (OpenGL ES או GLES) ו-Vulkan כדי לעבד גרפיקה על המסך. שיפור מהירות באמצעות חומרה מאפשר להשתמש בחומרה של המחשב (בדרך כלל ב-GPU) כדי להאיץ את העיבוד. מומלץ להשתמש בהאצת חומרה כדי לשפר את הביצועים, אבל יכול להיות שתצטרכו להשתמש במצב תוכנה אם המחשב שלכם לא תואם בגלל תמיכה במנהל התקן גרפי או בגלל דרישות חסרות של תמונת המערכת.

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

הגדרת האצת גרפיקה ב-AVD Manager

כדי להגדיר האצת גרפיקה ב-AVD, פועלים לפי השלבים הבאים:

  1. פותחים את הכלי לניהול מכשירים.
  2. יוצרים AVD חדש או עורכים AVD קיים.
  3. בחלון הגדרה, מחפשים את הקטע ביצועים מדומיים בכרטיסייה הגדרות נוספות.
  4. בוחרים ערך לאפשרות האצת גרפיקה.
  5. לוחצים על סיום.

הגדרת האצת הגרפיקה משורת הפקודה

כדי לציין סוג של האצת גרפיקה כשמריצים AVD משורת הפקודה, צריך לכלול את האפשרות -gpu, כמו בדוגמה הבאה:

emulator -avd avd_name -gpu mode [{-option [value]} ... ]

הערך של mode יכול להיות אחת מהאפשרויות הבאות:

  • auto: מאפשר לאמולטור לבחור בין האצת גרפיקה בחומרה או בתוכנה על סמך ה-AVD, הגדרת המחשב ומדדי האיכות.
  • host: שימוש ב-GPU במחשב לשיפור מהירות באמצעות חומרה. האפשרות הזו בדרך כלל מספקת את איכות הגרפיקה והביצועים הכי גבוהים לאמולטור, ויכולה להפעיל את MoltenVK ב-macOS כדי להאיץ את העיבוד של Vulkan. עם זאת, אם נתקלים בבעיות בהדמיה של גרפיקה, יכול להיות שצריך לעבור לרינדור תוכנה.
  • swiftshader_indirect: שימוש בגרסה של SwiftShader שתואמת להפעלה מהירה כדי לעבד גרפיקה באמצעות האצת תוכנה. האפשרות הזו היא חלופה טובה למצב host אם המחשב לא יכול להשתמש בשיפור מהירות באמצעות חומרה.

האפשרויות הבאות של mode הוצאו משימוש:

  • swiftshader: הוצא משימוש בגרסה 27.0.2. במקום זאת, אתם צריכים להשתמש ב-swiftshader_indirect.
  • angle: הוצא משימוש בגרסה 27.0.2. במקום זאת, אתם צריכים להשתמש ב-swiftshader_indirect.
  • mesa: הוצא משימוש בגרסה 25.3. במקום זאת, אתם צריכים להשתמש ב-swiftshader_indirect.
  • guest: הוצא משימוש ברמות API 28 ומעלה. במקום זאת, אתם צריכים להשתמש ב-swiftshader_indirect.
  • angle_indirect: הוצא משימוש בגרסה 34.2.14. במקום זאת, אתם צריכים להשתמש ב-swiftshader_indirect.

הגדרת האצת VM

האצת מכונת VM משתמשת במעבד של המחשב כדי לשפר באופן משמעותי את מהירות הביצוע של האמולטור. כדי לנהל את האינטראקציה הזו, נעשה שימוש בכלי שנקרא hypervisor, באמצעות הרחבות וירטואליזציה שהמעבד של המחשב מספק. בקטע הזה מפורטות הדרישות לשימוש בהאצת מכונות וירטואליות, ומוסבר איך להגדיר האצת מכונות וירטואליות בכל מערכת הפעלה.

דרישות כלליות

כדי להשתמש בהאצת מכונה וירטואלית עם האמולטור, המחשב צריך לעמוד בדרישות הכלליות שמפורטות בקטע הזה. המחשב צריך לעמוד גם בדרישות אחרות שספציפיות למערכת ההפעלה.

דרישות לגבי סביבת פיתוח

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

  • SDK Tools: גרסה מינימלית 17; גרסה מומלצת 26.1.1 ואילך
  • AVD: גרסת Android הנדרשת מתוארת בטבלה הבאה.

    ארכיטקטורת המעבד (CPU) דרישה לגבי תמונת מערכת
    X86_64 תמונות מערכת x86 או x86_64 ל-Android מגרסה 2.3.3 (רמת API‏ 10) ואילך
    ARM64 תמונות מערכת arm64-v8a ל-Android 5.0 (רמת API‏ 21) ומעלה

דרישות לגבי תוסף וירטואליזציה

בנוסף לדרישות של סביבת הפיתוח, המעבד של המחשב צריך לתמוך בתוספי וירטואליזציה. מעבדי התשלומים הנתמכים הם:

  • מעבדי Intel עם Intel Virtualization Technology ‏ (VT-x, vmx), כמו מעבדי Intel Core iX ו-Intel Core Ultra
  • מעבדי AMD עם AMD-V‏ (SVM), כמו מעבדי AMD Ryzen
  • Apple silicon

דרישות נוספות למעבדי Intel ו-AMD:

נדרש תרגום כתובות ברמה השנייה (Intel EPT או AMD RVI) למעבדי Intel ו-AMD. רוב המעבדים המודרניים של Intel ו-AMD תומכים בתרגום כתובות ברמה השנייה. יכול להיות שמעבדי Intel או AMD מהדור הראשון שמציעים תוספי וירטואליזציה לא יכללו תרגומים של דפים ברמה השנייה.

אם אתם לא בטוחים אם המעבד שלכם תומך בתוספים הנדרשים, כדאי לבדוק את המפרט של המעבד באתר היצרן. אם המעבד שלכם לא תומך בתוספים האלה, לא תוכלו להשתמש בהאצת מכונות וירטואליות.

הגבלות

ההגבלות הבאות חלות על האצת מכונות וירטואליות:

  • אי אפשר להריץ אמולטור עם האצת VM בתוך VM אחר, כמו VM שמארח VirtualBox,‏ VMWare או Docker. צריך להריץ אמולטור עם האצת מכונה וירטואלית ישירות במחשב המארח.
  • בהתאם למערכת ההפעלה ול-hypervisor, יכול להיות שלא תוכלו להריץ תוכנה שמשתמשת בטכנולוגיית וירטואליזציה אחרת במקביל להרצת אמולטור עם האצת מכונה וירטואלית. דוגמאות לתוכנות כאלה כוללות, בין היתר, פתרונות למכונות וירטואליות, תוכנות אנטי-וירוס מסוימות ופתרונות מסוימים למניעת רמאות. המצב הזה נצפה בעיקר ב-Windows עם Hyper-V מושבת. רוב התוכנות האלה יכולות להתקיים יחד עם אמולטור Android בלי בעיות. אבל אם מתרחשים עימותים, מומלץ לא להפעיל את האמולטור עם האצת VM בו-זמנית עם תוכנה כזו.

מידע על היפרויזורים

האצת מכונות וירטואליות דורשת היפרווייזר, כלי שמשתמש בהרחבות וירטואליזציה שמסופקות על ידי המעבד של המחשב.

בלי היפרויזור והאצת מכונה וירטואלית, האמולטור צריך לתרגם את קוד המכונה מהבלוק של המכונה הווירטואלית בלוק אחרי בלוק כדי להתאים לארכיטקטורה של המחשב המארח. התהליך הזה יכול להיות איטי למדי. אם יש היפרויזור, ואם מכונת ה-VM והארכיטקטורה של המחשב המארח תואמות, האמולטור יכול להריץ קוד ישירות במעבד המארח באמצעות ההיפרויזור. השיפור הזה מגדיל באופן משמעותי את המהירות והביצועים של האמולטור.

ה-hypervisor שהכי מתאים לכם תלוי במערכת ההפעלה ובהגדרה של המחשב. מידע נוסף זמין באחד מהקטעים הבאים:

איך בודקים אם מותקן היפר-ויזור

אפשר להשתמש באפשרות של שורת הפקודה של האמולטור -accel-check כדי לבדוק אם מותקן כרגע במחשב hypervisor.

בדוגמאות הבאות אפשר לראות איך משתמשים באפשרות accel-check של האמולטור. בכל דוגמה, Sdk הוא המיקום של Android SDK:

‫Windows:

c:\Users\janedoe\AppData\Local\Android> Sdk\emulator\emulator -accel-check
accel:
0
WHPX(10.0.22631) is installed and usable.
accel
יש כמה אפשרויות של היפר-ויזורים ב-Windows. לכן, יכול להיות שמה שאתם רואים יהיה שונה מהדוגמה שמופיעה כאן. לדוגמה, יכול להיות שתראו אחת ממילות המפתח הבאות בהודעה: AEHD, ‏ GVM (השם הקודם של AEHD).

‫macOS:

janedoe-macbookpro:Android janedoe$ ./Sdk/emulator/emulator -accel-check
accel:
0
Hypervisor.Framework OS X Version 13.2
accel

Linux:

janedoe:~/Android$ ./Sdk/emulator/emulator -accel-check
accel:
0
KVM (version 12) is installed and usable.

הגדרת האצת מכונות וירטואליות ב-Windows

ב-Windows, מומלץ להשתמש ב-Windows Hypervisor Platform ‏ (WHPX) שסופק על ידי מיקרוסופט, שנדרשת בשבילו מערכת Windows 10 בגרסה 1803 ואילך. עם זאת, יכול להיות ש-Android Studio ידרוש גרסה מתקדמת יותר של Windows. במקרים כאלה, צריך לפעול לפי דרישות המערכת של Android Studio.

יכול להיות ש-Windows Hypervisor Platform לא מופעלת כברירת מחדל. במקרים כאלה, צריך לפעול לפי ההוראות שבמאמר הגדרת האצת מכונה וירטואלית באמצעות Windows Hypervisor Platform כדי להפעיל אותה. יכול להיות שיהיה צורך בהפעלה מחדש אחרי ההפעלה.

הגדרת האצת מכונה וירטואלית באמצעות Windows Hypervisor Platform

כדי להפעיל את WHPX, המחשב שלכם צריך לעמוד בדרישות הבאות:

  • מעבדי Intel: תמיכה בטכנולוגיית וירטואליזציה (VT-x), בטבלאות דפים מורחבות (EPT) ובתכונות של אורח ללא הגבלה (UG). צריך להפעיל את VT-x בהגדרות ה-BIOS של המחשב.
  • מעבדי AMD: מומלץ מעבד AMD Ryzen. צריך להפעיל וירטואליזציה או SVM בהגדרות ה-BIOS של המחשב.
  • Android Studio 3.2 Beta 1 ואילך
  • Android Emulator מגרסה 27.3.8 ואילך
  • ‫Windows 10 ואילך

כדי להתקין את WHPX ב-Windows, פועלים לפי השלבים הבאים:

  1. במסך הבית של Windows, לוחצים על סמל Windows כדי לפתוח את תפריט ההתחלה.
  2. בסרגל החיפוש, מקלידים הפעלה או השבתה של תכונות Windows.

    לוח הבקרה הפעלה או השבתה של תכונות Windows אמור להופיע, וצריך לבחור בו.

  3. מקישים על מקש Enter או לוחצים על הפעלה או השבתה של תכונות Windows כדי להפעיל את לוח הבקרה.

  4. מסמנים את התיבה שליד Windows Hypervisor Platform.

  5. לוחצים על אישור.

  6. אחרי שההתקנה מסתיימת, מפעילים מחדש את המחשב.

הגדרת האצת מכונה וירטואלית באמצעות מנהל ההיפר-ויזורים של Android Emulator ‏ (AEHD) ב-Windows

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

  • מעבדי Intel או AMD עם תוסף וירטואליזציה.
  • ‫Windows 11 או Windows 10 בגרסת 64 ביט (אין תמיכה ב-Windows בגרסת 32 ביט)

    משתמשים ב-Windows 8.1, ב-Windows 8 וב-Windows 7 יכולים להמשיך להשתמש ב-AEHD 1.7 או בגרסאות קודמות. עם זאת, לא תהיה תמיכה בתרחישים כאלה.

  • צריך להשבית את התכונות שמשתמשות גם ב-Hypervisor של Windows Hyper-V בתיבת הדו-שיח Windows Features.

    רכיבים מסוימים של Windows מפעילים גם את Windows Hyper-V Hypervisor ומשתמשים בו, גם אם Windows Hypervisor Platform לא נבחר בתיבת הדו-שיח Windows Features. הן כוללות תכונות אבטחה כמו Hyper-V,‏ Core Isolation ועוד. (שימו לב שהתכונה Hyper-V היא לא אותו דבר כמו Hyper-V Hypervisor). אם אתם צריכים את התכונות האלה, אתם יכולים להשתמש ב-WHPX.

במעבדי AMD, אפשר להתקין את מנהל ההיפר-ויזורים של אמולטור Android דרך SDK Manager ב-Android Studio 4.0 Canary 5 ואילך.

במעבדי Intel, אפשר להתקין את מנהל ההיפר-ויזורים של Android Emulator דרך SDK Manager ב-Android Studio Flamingo או בגרסאות חדשות יותר.

כדי להתקין מ-SDK Manager:

  1. בוחרים באפשרות Tools > SDK Manager.
  2. לוחצים על הכרטיסייה SDK Tools (כלים ל-SDK) ובוחרים באפשרות Android Emulator hypervisor driver (מנהל התקן של היפר-ויז'ר לאמולטור Android).
  3. לוחצים על אישור כדי להוריד ולהתקין את מנהל ההתקן של Hypervisor של Android Emulator.
  4. אחרי ההתקנה, מוודאים שהדרייבר פועל בצורה תקינה באמצעות הפקודה הבאה בשורת הפקודה:

    AEHD 2.1 ואילך

    sc query aehd
    

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

    SERVICE_NAME: aehd
           ...
           STATE              : 4  RUNNING
           ...
    

    הודעת השגיאה הבאה מציינת שאפשרות ההרחבה של הווירטואליזציה לא מופעלת ב-BIOS או ש-Hyper-V לא מושבת:

    SERVICE_NAME: aehd
           ...
           STATE              : 1  STOPPED
           WIN32_EXIT_CODE    : 4294967201 (0xffffffa1)
           ...
    

    AEHD 2.0 ומטה

    sc query gvm
    

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

    SERVICE_NAME: gvm
           ...
           STATE              : 4  RUNNING
           ...
    

    הודעת השגיאה הבאה מציינת שאפשרות ההרחבה של הווירטואליזציה לא מופעלת ב-BIOS או ש-Hyper-V לא מושבת:

    SERVICE_NAME: gvm
           ...
           STATE              : 1  STOPPED
           WIN32_EXIT_CODE    : 4294967201 (0xffffffa1)
           ...
    

אפשר גם להוריד ולהתקין את מנהל ההיפר-ויז'ר של Android Emulator מ-GitHub. אחרי שפורקים את חבילת מנהלי ההתקנים, מריצים את הפקודה silent_install.bat בשורת הפקודה עם הרשאות אדמין.

כדי להסיר את מנהל ההתקן של ההיפרויזור של Android Emulator, מריצים את הפקודות הבאות בשורת פקודה עם הרשאות אדמין:

AEHD 2.1 ואילך

   sc stop aehd
   sc delete aehd

AEHD 2.0 ומטה

   sc stop gvm
   sc delete gvm

הגדרת האצת מכונות וירטואליות ב-macOS

ב-macOS, האמולטור של Android משתמש ב-Hypervisor.Framework המובנה, שנדרשת בשבילו גרסה macOS v10.10 ‏ (Yosemite) ומעלה. עם זאת, יכול להיות ש-Android Studio ידרוש גרסה גבוהה יותר של macOS. במקרים כאלה, צריך לפעול לפי דרישות המערכת של Android Studio.

הגדרת האצת מכונות וירטואליות ב-Linux

מערכות מבוססות Linux תומכות בהאצת מכונות וירטואליות באמצעות חבילת התוכנה KVM. פועלים לפי ההוראות להתקנת KVM במערכת Linux, ואז מוודאים ש-KVM מופעל. במערכות Ubuntu, אפשר לעיין במאמר בנושא התקנת Ubuntu KVM.

דרישות

כדי להריץ KVM צריך הרשאות משתמש ספציפיות. צריך לוודא שיש לכם הרשאות מספיקות כמו שמוסבר בהוראות ההתקנה של KVM.

כדי להשתמש בהאצת מכונות וירטואליות ב-Linux, המחשב צריך לעמוד גם בדרישות הבאות:

  • למעבדי Intel: תמיכה בטכנולוגיית וירטואליזציה (VT-x), בתכונות Intel EM64T (Intel 64) ובהפעלת הפונקציונליות של Execute Disable (XD) Bit.
  • למעבדי AMD: תמיכה בווירטואליזציה של AMD‏ (AMD-V).

בדיקה אם KVM מותקן ב-Linux

אפשר להשתמש באפשרות של שורת הפקודה -accel-check של האמולטור כדי לבדוק אם KVM מותקן. אפשרות נוספת היא להתקין את חבילת cpu-checker שמכילה את הפקודה kvm-ok.

בדוגמה הבאה אפשר לראות איך משתמשים בפקודה kvm-ok:

  1. מתקינים את החבילה cpu-checker:

    sudo apt-get install cpu-checker
    egrep -c '(vmx|svm)' /proc/cpuinfo
    

    פלט של 1 ומעלה מציין שיש תמיכה בווירטואליזציה. פלט של 0 מציין שהמעבד לא תומך בווירטואליזציה של חומרה.

  2. מריצים את הפקודה kvm-ok:

    sudo kvm-ok
    

    הפלט הצפוי:

    INFO: /dev/kvm exists
    KVM acceleration can be used
    

    אם מופיעה השגיאה הבאה, המשמעות היא שעדיין אפשר להריץ מכונות וירטואליות. עם זאת, המכונה הווירטואלית איטית יותר בלי התוספים של KVM.

    INFO: Your CPU does not support KVM extensions
    KVM acceleration can NOT be used
    

התקנת KVM ב-Linux

כדי להתקין את KVM, משתמשים בפקודה הבאה:

‫Cosmic ‏ (18.10) ואילך:

sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils

‫Lucid‏ (10.04) ואילך:

sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

‫Karmic‏ (9.10) או גרסה מוקדמת יותר:

sudo aptitude install kvm libvirt-bin ubuntu-vm-builder bridge-utils

מדריך להסרת Intel HAXM

התמיכה ב-HAXM הוצאה משימוש לפני זמן רב (01/2023) כי Intel הפסיקה את הפיתוח של HAXM.

החל מגרסת אמולטור 36.2.x.x, אמולטור Android לא ישתמש יותר ב-HAXM, ואם השתמשתם בו בעבר, תצטרכו להתקין מנהל התקן חדש של Hypervisor. מומלץ להשתמש ב-Windows Hypervisor Platform‏ (WHPX) של מיקרוסופט.

מומלץ להסיר את Intel HAXM לחלוטין ממערכת Windows, אלא אם מותקנת אצלכם תוכנה אחרת שתלויה ב-HAXM ואתם בוחרים להשאיר את Intel HAXM ולנהל אותה בעצמכם.

כדי להסיר את Intel HAXM, פועלים לפי השלבים הבאים:

בדיקה אם Intel HAXM מותקן

כדי לבדוק אם Intel HAXM מותקן במערכת Windows, פותחים את מסוף הפקודות של Windows ומריצים את הפקודה הבאה:

   sc query intelhaxm

אם Intel HAXM מותקן ופועל, ההודעה הבאה אמורה להופיע בפלט של הפקודה.

אם Intel HAXM מותקן אבל מושבת, תוצג ההודעה הבאה בפלט של הפקודה.

בשני המקרים, בין אם Intel HAXM פועל או מושבת, הוא מותקן. כדי להמשיך בהסרת Intel HAXM, צריך לעבור אל השלב הבא.

אם Intel HAXM לא מותקן, תופיע ההודעה הבאה.

הסרת Intel HAXM באמצעות SDK Manager מ-Android Studio

אם התקנתם בעבר את HAXM באמצעות SDK Manager, עדיין אמור להופיע המודול בכרטיסייה SDK Tools. פותחים את SDK Manager מ-Android Studio, עוברים לכרטיסייה SDK Tools (כלים ל-SDK) ואז עוברים לשורה Intel x86 Emulator Accelerator (HAXM installer) - Deprecated (מאיץ אמולטור Intel x86 (התקנת HAXM) – הוצא משימוש). הוא אמור להיראות כמו בצילום המסך הבא.

מבטלים את הסימון בתיבת הסימון כמו שמוצג בצילום המסך הבא.

לוחצים על הלחצן 'אישור' ומופיעה תיבת הדו-שיח הבאה.

אחרי הסרה מוצלחת של Intel HAXM, אמור להופיע המסך הבא. ההסרה הסתיימה ואפשר להפסיק כאן.

אם מופיעות שגיאות, ממשיכים אל השלב הבא.

מסירים את Intel HAXM באמצעות 'הגדרות' ב-Windows.

פותחים את ההגדרות של Windows ועוברים אל 'אפליקציות > אפליקציות מותקנות'.

מאתרים את הרשומה Intel Hardware Accelerated Execution Manager (מנהל ביצוע מואץ של חומרה של אינטל) ולוחצים על Uninstall (הסרה), כמו שמוצג בצילום המסך הבא.

תוכנת ההסרה של Intel HAXM תפעל ותדווח על התוצאה. אם ההסרה מצליחה, עוברים אל מחיקת חבילת ההתקנה של Intel HAXM. אם לא, ממשיכים לשלב הבא.

הסרת התקנה באמצעות שורת הפקודה

  1. מריצים את הפקודה 'sc stop intelhaxm' כדי להפסיק את השירות Intel HAXM. אמור להתקבל הפלט הבא:

  2. מחיקת שירות Intel HAXM על ידי הפעלת הפקודה 'sc delete intelhaxm'. אמור להתקבל הפלט הבא:

  3. עוברים אל מחיקה של חבילת ההתקנה של Intel HAXM.

מחיקת חבילת ההתקנה של Intel HAXM.

השלב הזה נדרש רק כשמסירים את Intel HAXM באמצעות 'הגדרות' של Windows או שורת הפקודה. אם לא מבצעים את השלב הזה, יכול להיות שמנהל ה-SDK של Android Studio ימשיך להציג את Intel HAXM כ'מותקן'.

חבילת ההתקנה נמצאת בתיקייה<Your Android SDK folder>\extras\intel. כברירת מחדל, Android SDK יותקן בנתיב C:\Users\<Your Windows User ID >\AppData\Local\Android\Sdk. דוגמה בצילום המסך הבא.