פתרון בעיות ידועות באמולטור Android

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

סוגיות כלליות


מפות Google לא מוצגות באמצעי הבקרה המורחבים של Android Emulator

החל מאמצע מאי, בגרסאות של Android Emulator שקדמו לגרסה 34.2.13 לא תהיה יותר גרסה פונקציונלית של מפות Google באמצעי הבקרה המורחבים. במהדורות ישנות יותר של מכונות הווירטואליות מותקנת גרסה של Chromium שאינה תואמת לממשק ה-API של JavaScript במפות Google.

בדיקה אם יש מספיק מקום בכונן

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

תוכנות אנטי-וירוס

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

בחבילות אנטי-וירוס רבות יש אפשרות להוסיף אפליקציות ספציפיות לרשימת האפליקציות המהימנות, וכך האפליקציות האלה יכולות לפעול בלי פגיעה בביצועים. אם השמירה או הטעינה של קובצי snapshot של AVD נמוכים בביצועים, תוכלו לשפר את הביצועים על ידי הוספה של אפליקציית Android Emulator כאפליקציה מהימנה בתוכנת האנטי-וירוס.

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

יכול להיות שחלק מתוכנות האנטי-וירוס לא תואמות למהדר של Android.

אם אתם משתמשים בתוכנת Avast ונתקלים בבעיות בהפעלת Android Emulator, משביתים את האפשרות שימוש בווירטואליזציה בתצוגת עץ כשהאפשרות זמינה ואת האפשרות הפעלת וירטואליזציה בסיוע חומרה בהגדרות פתרון בעיות של Avast. בנוסף, אחרי שההדמיה של החומרה של Avast מושבתת, צריך לוודא ש-HAXM מוגדר בצורה תקינה שוב על ידי התקנה מחדש מלאה של HAXM העדכני ביותר מ-SDK Manager.

ב-Windows, לפעמים ה-AVD קופא עם HAXM, ואפשר לפתור את הבעיה על ידי הסרת McAfee לחלוטין.

Windows: זיכרון RAM פנוי ותשלום מראש

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

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

ברוב המקרים, נפח האחסון בכונן הקשיח שהוקצה לקובץ הדפים, יחד עם ה-RAM הפיזי, מספיק בהחלט לרוב תרחישי השימוש במהדר. עם זאת, אם אתם נתקלים בכשלים בהפעלת הסימולטור בגלל חריגה ממגבלת ההתחייבות, מומלץ לבדוק את חיוב ההתחייבות הנוכחי. אפשר לראות אותו בכרטיסייה Performance (ביצועים) במנהל המשימות של Windows. כדי לפתוח את מנהל המשימות, מקישים על Ctrl+Shift+Esc.

יש כמה דרכים להקטין את הסבירות לחריגה ממגבלת ההתחייבויות:

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

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

התכונה 'מגע רב-משתמש' לא פועלת בחלון הכלים

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

האמולטור גורם לירידה באיכות הפלט של אודיו ב-Bluetooth

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

כדי להימנע מהבעיה הזו, משביתים את המיקרופון באמולטור על ידי הוספת hw.audioInput=no לקובץ config.ini של המכשיר הווירטואלי של Android (AVD). כדי למצוא את הקובץ config.ini של AVD, עוברים אל ה-AVD במנהל המכשירים, לוחצים על תפריט ההזזה למעלה ובוחרים באפשרות Show on Disk.

ההפעלה של מכשירים וירטואליים של Android ב-ChromeOS נכשלה

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

אזהרות מחיישן הטיה של פרק כף היד ב-Wear OS

ב-Wear OS, יכול להיות שהאמולטור ירשום שוב ושוב ביומן את ההודעה הבאה לגבי חיישן הטיה של פרק כף היד: the host has not provided value yet for sensorHandle=16

מפתחים יכולים להתעלם מהאזהרות האלה.

חלון המהנתב המוטמע קטן מדי

במכונות עם רזולוציה נמוכה יותר, כמו 1024x768, יכול להיות שיהיה קשה לקרוא את המסך של הסימולטור כשהוא פועל בחלון כלים ב-Android Studio. כדי לפנות מקום למהדורת האפליקציה, סוגרים את חלון הכלי Device Manager אם הוא פתוח. אפשר גם למשוך את חלון הסימולטור מ-Android Studio. לשם כך, לוחצים על הגדרות > מצב תצוגה בחלון של המהדמ, ובוחרים באפשרות חלון במקום באפשרות מוצמדת למעגן.

בעיות בגרפיקה


Android Emulator פועל לאט אחרי עדכון

יש כמה גורמים חיצוניים שיכולים לגרום לכך שמהדורת Android Emulator תתחיל לפעול לאט אחרי עדכון. כדי להתחיל בפתרון הבעיות, מומלץ לבצע את השלבים הבאים:

  • אם יש לכם כרטיס גרפי של Intel (ובמיוחד Intel HD 4000), חשוב לוודא שהורדתם והתקנתם את מנהל הגרפיקה העדכני ביותר של Intel.
  • אם במחשב יש גם GPU של Intel וגם GPU נפרד, צריך להשבית את ה-GPU של Intel במנהל המכשירים כדי לוודא שאתם משתמשים ב-GPU הנפרד.
  • מפעילים את האמולטור במצב -gpu swiftshader. למידע נוסף על הגדרת אפשרויות להאצת הגרפיקה בשורת הפקודה, ראו הגדרת האצת חומרה.
  • אם אין לכם חיבור IPv6, ודאו שהנתב לא משתמש בכתובות IPv6.

אם הבעיה נמשכת והפעלת Android Emulator עדיין איטית, דווחו על באג ולכללו את הפרטים הנדרשים של Android Emulator כדי שנוכל לבדוק את הבעיה.

שגיאה: לא ניתן למצוא את vulkan-1.dll

אם הסימולטור לא מצליח להיפתח בגלל השגיאה vulkan-1.dll cannot be found, כנראה שצריך לעדכן את הסימולטור. כדי לעדכן את האמולטור ב-Android Studio, עוברים לכלים > SDK Manager ומתקינים את הגרסה היציבה האחרונה של פלטפורמת Android.

לחלופין, אם אתם לא צריכים אפליקציות שמשתמשות בספריית הגרפיקה Vulkan, תוכלו להשבית את Vulkan על ידי הפעלת הסימולטור משורת הפקודה עם הדגל -feature -Vulkan.

לא ניתן ליצור קובץ snapshot

אין תמיכה ביצירת קובץ snapshot של המהדמן שכולל את ספריית הגרפיקה Vulkan. כדי להריץ את הסימולטור בלי Vulkan, מריצים את הסימולטור משורת הפקודה עם הדגל -feature -Vulkan. לחלופין, אם אתם רוצים להשתמש בתמונות מצב כחלק מתהליך הפיתוח, תוכלו להסיר אפליקציות עם Vulkan, כמו Chrome בגרסה API 30 ואילך, ולהימנע משימוש בהן.

לא ניתן לפתוח את דף האינטרנט בצורה תקינה

החל מרמה 30 של API, Chrome משתמש בספריית הגרפיקה Vulkan כקצה העורפי של העיבוד, ויכולות להיות בעיות תאימות במכונות מסוימות. אם הרינדור של Chrome לא תקין, נסו להפעיל את הסימולטור משורת הפקודה עם הדגל -feature -Vulkan.

אזהרה לגבי מנהל ההתקן של GPU – מעבר לתוכנה

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

בתמונות שלא מ-Play Store, אפשר לעשות זאת במנהל המכשיר -> 3 נקודות -> עריכה. בתמונות של Play Store, צריך לערוך באופן ידני את שני קובצי התצורה האלה:

~/.android/your_avd_name.avd/config.ini

~/.android/your_avd_name.avd/hardware-qemu.ini

ושינוי של hw.gpu.mode ל-host

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

האמולטור לא מופעל ב-Windows Chrome Remote Desktop

אם ה-Emulator לא מופעל בזמן השימוש ב-Chrome Remote Desktop ב-Windows, הפתרון הזמני המומלץ כרגע הוא להשתמש בדגל -gpu, כמו -gpu host או -gpu swiftshader.

ההתנהגות של המהדר ב-macOS שגויה במצב עיבוד (רנדור) בחומרה

במכשירי Mac עם Apple Silicon, כשמפעילים את המצב 'עיבוד באמצעות חומרה', הסימולטור משתמש בספרייה MoltenVK ל-Vulkan API. בדרך כלל, MoltenVK מספק ביצועים טובים יותר, אבל הספרייה לא תומכת בכל התכונות של Vulkan. אם נתקלתם בבעיות תאימות, כמו כשלים בהדרכה של Shader, בעיות גרפיות או קריסות באפליקציות, תוכלו לשנות את מצב הרינדור לתוכנה דרך הגדרות ה-AVD או להשתמש בארגומנט שורת הפקודה -gpu swiftshader.

לחלופין, אפשר להשבית את התמיכה ב-Vulkan באמצעות הארגומנט -feature -Vulkan כדי להמשיך להשתמש בשיפור המהירות באמצעות חומרה באפליקציות GLES.

בעיות ברשת


אין אינטרנט: לא ניתן למצוא את כתובת ה-DNS של השרת

אם האמולטור לא מצליח להתחבר לאינטרנט, נסו להפעיל את האמולטור משורת הפקודה באמצעות האפשרות -dns-server “2001:4860:4860::8844,2001:4860:4860::8888,8.8.8.8,8.8.4.4”. הפקודה הזו מספקת רשימה מופרדת בפסיקים של כתובות IP של Google Public DNS. למידע נוסף על Google Public DNS, קראו את המאמר Google Public DNS למכשירים.

אין אינטרנט: בעיות ברזולוציית ה-DNS

לפעמים כתובות ה-DNS בקובץ /etc/resolv.conf לא פועלות כמו שצריך. כדי לעקוף את הבעיה, אפשר להפעיל את האמולטור משורת הפקודה באמצעות האפשרות -dns-server 8.8.8.8 או -dns.server 2001:4860:4860::8888 כדי להתחבר דרך רשת IPv6 בלבד.

בעיות ישנות (במכשירי אמולציה שהוצאו משימוש או במערכות ישנות)


לא ניתן להפעיל את AVD

יכול להיות ש-AVD לא יופעל אם קיים דוח קריסה למהדורה חדשה יותר של המהדמ (בעיה מס' 281725854). הבעיה הזו מתרחשת רק אצל משתמשים שעדכנו מגרסה 33.x של גרסת ה-Canary לגרסה 32.1.13, שחוו קריסה בפעם האחרונה שהפעילו את הגרסה 33.x ולא הפעילו מחדש את ה-AVD מאז, כך שהספרייה %TEMP% או /tmp עדיין פועלת. אם נתקלתם בבעיה הזו, כדאי לנסות לנקות את הספרייה %TEMP% (/tmp ב-Linux או ב-macOS).

Windows: לא ניתן להפעיל את הסימולטור אם יש Unicode בשם ה-AVD

ב-Windows, כשמנהל המכשירים יוצר מכשיר וירטואלי של Android‏ (AVD), הוא יוצר את ה-AVD כברירת מחדל ב-C:\Users\<name>\.android\avd. עם זאת, אם לשם של ה-AVD (<name>) מוגדר Unicode, האמולטור לא יכול להפעיל את ה-AVD בצורה תקינה בעזרת מיקום ברירת המחדל הזה.

הבעיה הזו נפתרה ב-Emulator מגרסה 31.3.6 ואילך. כדי לפתור את הבעיה, מעדכנים את הסימולטור על ידי בחירה באפשרות Tools > SDK Manager.

לחלופין, כדי לעקוף את הבעיה, מגדירים את משתנה הסביבה ANDROID_SDK_HOME לספרייה בהתאמה אישית לפני יצירת AVD. לדוגמה, יוצרים את הספרייה C:\Android\home ומגדירים את ANDROID_SDK_HOME לספרייה החדשה הזו. מידע נוסף זמין במאמר משתני סביבה.

למכונות וירטואליות אין אפשרות לדמות תכונות מסוימות של מעבדים שנדרשות במערכות Android מסוג x86

בדרך כלל, היפר-ווירטואלים לא יכולים לדמות תכונות מסוימות של מעבדים, כמו Streaming SIMD Extensions‏ (SSE), שנדרשות במערכות Android עם מעבדי x86.