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

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

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

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

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

הגדרת האצת העיבוד הגרפי

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

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

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

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

  1. פותחים את Device Manager.
  2. יוצרים AVD חדש או עורכים AVD קיים.
  3. בחלון Configuration, מאתרים את הקטע Emulated Performance בכרטיסייה Additional Settings.
  4. בוחרים ערך לאפשרות האצת עיבוד גרפי.
  5. לוחצים על סיום.

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

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

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

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

  • ‫auto: האמולטור בוחר בין האצת עיבוד גרפי בחומרה או בתוכנה על סמך ה-AVD, הגדרת המחשב ומדדי האיכות. זה המצב המומלץ לרוב המשתמשים.
  • ‫host: שימוש ב-GPU במחשב לשיפור המהירות באמצעות חומרה. בדרך כלל, האפשרות הזו מספקת את האיכות הגרפית והביצועים הטובים ביותר לאמולטור, ויכולה להפעיל את MoltenVK ב-macOS לעיבוד מואץ של Vulkan. עם זאת, אם אתם נתקלים בבעיות באמולציה של גרפיקה, יכול להיות שתצטרכו לעבור לרינדור תוכנה.
  • ‫software: שימוש בקצה העורפי המתאים ביותר לעיבוד תוכנה של ה-AVD, תכונות האמולציה המבוקשות ומדדי האיכות. האפשרות הזו מומלצת אם נתקלתם בבעיות במצבים auto או host.
  • ‫lavapipe: שימוש ברינדור תוכנה עם מנהלי התקנים של Mesa 3D.
  • ‫swiftshader: שימוש ברינדור תוכנה עם SwiftShader לעומסי עבודה של GLES ו-Vulkan.
  • ‫swangle: שימוש במנהלי התקנים של תוכנת SwiftShader עם קצה עורפי של ANGLE.

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

  • mesa: הוצא משימוש בגרסה 25.3.0.
  • ‫angle: הוצא משימוש בגרסה 27.0.2.
  • ‫angle_indirect: הוצא משימוש בגרסה 34.2.14.
  • ‫guest: הוצא משימוש בגרסה 36.4.9.
  • ‫swiftshader_indirect: הוצא משימוש בגרסה 36.4.9.
  • ‫swangle_indirect: הוצא משימוש בגרסה 36.4.9.

הגדרת האצת VM

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

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

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

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

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

  • כלי SDK: גרסה מינימלית 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‏ (VT-x, ‏ vmx), כמו מעבדי Intel Core iX ו-Intel Core Ultra
  • מעבדי AMD עם AMD-V‏ (SVM), כמו מעבדי AMD Ryzen
  • Apple Silicon

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

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

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

הגבלות

להאצת VM יש את המגבלות הבאות:

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

מידע על מנהלי מכונות וירטואליות (hypervisors)

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

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

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

איך בודקים אם מותקן 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
יש כמה אפשרויות ל-hypervisor ב-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.

הגדרת האצת VM ב-Windows

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

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

הגדרת האצת VM באמצעות Windows Hypervisor Platform

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

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

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

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

    לוח הבקרה Turn Windows features on or off (הפעלה או השבתה של תכונות Windows) אמור להופיע ולהיות מסומן.

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

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

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

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

הגדרת האצת VM באמצעות מנהל ההתקן של Hypervisor באמולטור Android‏ (AEHD) ב-Windows

כדי להתקין את מנהל ההתקן של ה-hypervisor של אמולטור Android ולהשתמש בו, המחשב צריך לעמוד בדרישות הבאות:

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

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

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

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

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

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

כדי להתקין מ-SDK Manager, פועלים לפי השלבים הבאים:

  1. בוחרים באפשרות Tools (כלים) > SDK Manager (מנהל SDK).
  2. לוחצים על הכרטיסייה SDK Tools ובוחרים באפשרות Android Emulator hypervisor driver.
  3. לוחצים על OK כדי להוריד ולהתקין את מנהל ההתקן של Hypervisor לאמולטור Android.
  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)
           ...
    

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

מסירים את מנהל ההתקן של ה-hypervisor של אמולטור Android באמצעות הפקודות הבאות בשורת הפקודה עם הרשאות אדמין:

‫AEHD מגרסה 2.1 ואילך

   sc stop aehd
   sc delete aehd

‫AEHD מגרסה 2.0 ומטה

   sc stop gvm
   sc delete gvm

הגדרת האצת VM ב-macOS

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

הגדרת האצת VM ב-Linux

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

דרישות

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

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

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

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

כדי לבדוק אם KVM מותקן, אתם יכולים להשתמש באפשרות שורת הפקודה -accel-check של האמולטור. לחלופין, אפשר להתקין את החבילה 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 ואז לשורה Intel x86 Emulator Accelerator (HAXM installer) - Deprecated. הוא אמור להיראות כמו בצילום המסך הבא.

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

לוחצים על הכפתור "Apply" (אישור) ותיבת הדו-שיח הבאה אמורה להופיע.

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

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

מסירים את Intel HAXM דרך ההגדרות של Windows.

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

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

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

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

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

  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". דוגמה לכך מופיעה בצילום המסך הבא.