בעיות מוכרות ב-Android Studio ובפלאגין Android Gradle

בדף הזה מפורטות בעיות ידועות ב-Android Studio Otter וב-Android Gradle Plugin 8.13.0. אם נתקלתם בבעיה שלא מופיעה כאן, אתם יכולים לדווח על באג.

שדרוג לגרסת Preview: כל גרסה של Android Studio ושל Android Gradle Plugin נועדה לשפר את היציבות והביצועים, ולהוסיף תכונות חדשות. כדי ליהנות כבר עכשיו מהיתרונות של הגרסאות הקרובות, אפשר להוריד ולהתקין את Android Studio Preview.

בעיות מוכרות ב-Android Studio

בקטע הזה מתוארות בעיות מוכרות שקיימות בגרסה היציבה העדכנית של Android Studio.

‫Kotlin 2.0: אי אפשר לפתור Lambdas ב-Layout Inspector

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

פתרון עקיף: עד שהבעיה הזו תיפתר, אפשר להוסיף את אפשרות הקומפיילר שמופיעה בהמשך כפתרון עקיף:

kotlin {
  compilerOptions {
    freeCompilerArgs.add("-Xlambdas=class")
  }
}

הפעלת הגדרה ללא Gradle-aware Make לפני ההשקה מובילה לשגיאת פריסה

הייתה בעיה בגרסת Canary 9 של Android Studio Ladybug Feature Drop שגרמה להסרת פרטי תצורת ההרצה מפרויקטים שנפתחו באמצעות הגרסה הזו. אם פתחתם את הפרויקט עם הגרסה הזו בשלב כלשהו, והפעלת האפליקציה גורמת לשגיאה 'טעינת ארטיפקטים של build', צריך לוודא שבקטע 'לפני ההפעלה' של הגדרת ההפעלה הפעילה מופיע השלב 'Gradle-aware Make'. כדי לוודא זאת, לוחצים על Run/Debug Configurations > Edit Configurations, לוחצים על הגדרת ההפעלה הפעילה ומוודאים שיש שלב Gradle-aware Make בקטע Before launch. לצערנו, Android Studio לא יכול לתקן את הבעיה הזו באופן אוטומטי כי יכול להיות שחלק מהגדרות ההרצה הוגדרו בכוונה ללא שלב של 'Gradle-aware Make'.

האפשרות 'החלת שינויים והפעלה מחדש של הפעילות' לא מפעילה מחדש את הפעילות במכשירים או באמולטורים עם API ברמה 35

כשפורסים שינויים בקוד למכשיר עם API ברמה 35 באמצעות האפשרות Apply Changes & Restart Activity (החלת שינויים והפעלה מחדש של הפעילות), האפליקציה לא מופעלת מחדש ולא רואים את ההשפעה של השינויים. אם מריצים מחדש את האפליקציה, אפשר לראות את ההשפעה של שינויי הקוד. הצוות שלנו בודק את הנושא.

חלון העזרה של Firebase מציג הודעת שגיאה

אם בחלון של Firebase Assistant (כלים > Firebase מהתפריט הראשי) מוצגת הודעת שגיאה, צריך לבטל את התוקף של מטמונים ולהפעיל מחדש את Android Studio כדי לתקן את השגיאה.

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

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

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

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

שגיאה במהלך העיבוד של התצוגה המקדימה של הכתיבה

החל מ-Android Studio Chipmunk, אם אתם רואים את השגיאות java.lang.NoSuchFieldError: view_tree_saved_state_registry_owner או java.lang.ClassNotFoundException: androidx.savedstate.R$id בחלונית הבעיות, הקפידו לכלול תלות debugImplementation ב-androidx.lifecycle:lifecycle-viewmodel-savedstate במודול.

אם אתם רואים את java.lang.NoSuchFieldError: view_tree_lifecycle_owner בחלונית הבעיות, הקפידו לכלול תלות debugImplementation ב-androidx.lifecycle:lifecycle-runtime במודול.

אם אתם רואים את השגיאה java.lang.NoClassDefFoundError: Could not initialize class androidx.customview.poolingcontainer.PoolingContainer או java.lang.NoClassDefFoundError: androidx/customview/poolingcontainer/PoolingContainerListener בחלונית הבעיות, הקפידו לכלול תלות debugImplementation ב-androidx.customview:customview-poolingcontainer במודול.

שגיאה כשמשתמשים בסיסמאות שונות למפתח ולמאגר המפתחות

החל מגרסה 4.2, ‏ Android Studio פועל ב-JDK 11. העדכון הזה גורם לשינוי בהתנהגות הבסיסית שקשורה למפתחות חתימה.

כשמנווטים אל Build > Generate Signed Bundle / APK ומנסים להגדיר חתימת אפליקציה ל-App Bundle או ל-APK, הזנה של סיסמאות שונות למפתח ולמאגר המפתחות עלולה להוביל לשגיאה הבאה:

Key was created with errors:
Warning: Different store and Key passwords not supported for PKCS12 Key stores

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

‫Android Studio לא מופעל אחרי התקנת גרסה 4.2

‫Studio מנסה לייבא קובצי .vmoptions קודמים ולנקות אותם כדי שיוכלו לפעול עם איסוף האשפה שמשמש את JDK 11. אם התהליך הזה נכשל, יכול להיות שסביבת הפיתוח המשולבת לא תופעל אצל משתמשים מסוימים שהגדירו אפשרויות VM מותאמות אישית בקובץ .vmoptions.

כדי לעקוף את הבעיה, מומלץ להוסיף הערות לאפשרויות מותאמות אישית בקובץ .vmoptions (באמצעות התו '#'). אפשר למצוא את הקובץ .vmoptions במיקומים הבאים:

Windows

C:\Users\YourUserName\AppData\[Local|Roaming]\Google\AndroidStudio4.2\studio64.exe.vmoptions

macOS

~/Library/Application Support/Google/AndroidStudio4.2/studio.vmoptions

Linux

~/.config/Google/AndroidStudio4.2/studio64.vmoptions

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

אפליקציות שמשתמשות ב-Database Inspector קורסות באמולטור Android 11

אפליקציות שמשתמשות ב-Database Inspector עלולות לקרוס כשהן פועלות באמולטור Android 11, עם שגיאה כמו זו שמופיעה ב-logcat:

 Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR)

כדי לפתור את הבעיה, צריך לשדרג את האמולטור של Android 11 לגרסה 9 ואילך. לשם כך, עוברים אל Tools > SDK Manager. בכרטיסייה SDK Platforms (פלטפורמות SDK), מסמנים את התיבה Show Package Details (הצגת פרטי החבילה) ובוחרים בגרסה 9 ואילך של האמולטור Android 11.

‫Studio לא מופעל אחרי השדרוג

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

ב-Android Studio מגרסה 4.1 ואילך:

  • Windows: %APPDATA%\Google\AndroidStudio<version>
    דוגמה: C:\Users\your_user_name\AppData\Roaming\Google\AndroidStudio4.1

  • macOS: ~/Library/Application Support/Google/AndroidStudio<version>
    דוגמה: ~/Library/Application Support/Google/AndroidStudio4.1

  • Linux:~/.config/Google/AndroidStudio<version> ו-~/.local/share/Google/AndroidStudio<version>
    דוגמה: ~/.config/Google/AndroidStudio4.1 ו-~/.local/share/Google/AndroidStudio4.1

ב-Android Studio מגרסה 4.0 ומטה:

  • Windows: %HOMEPATH%\.AndroidStudio<version>\config
    דוגמה: C:\Users\your_user_name\.AndroidStudio3.6\config

  • macOS: ~/Library/Preferences/AndroidStudio<version>
    דוגמה: ~/Library/Preferences/AndroidStudio3.6

  • Linux: ~/.AndroidStudio<version>/config
    דוגמה: ~/.AndroidStudio3.6/config

שימו לב: ספריית ההגדרות לגרסאות Canary וגרסאות בטא של Android Studio היא PreviewX.Y במקום X.Y עבור <version>. לדוגמה, בגרסאות Canary של Android Studio 4.1 נעשה שימוש ב-AndroidStudioPreview4.1, במקום בספרייה AndroidStudio4.1 שמשמשת לגרסאות Release Candidate ולגרסאות יציבות.

בעיה בהידור בפרויקטים של Kotlin multiplatform

יכול להיות שיופיעו שגיאות הידור בקוד Kotlin MPP בגלל סמלים חסרים. כדי לפתור את הבעיה, צריך לשדרג את התוסף של Kotlin לגרסה 1.4.

התנגשויות במיפוי מקשים ב-Linux

ב-Linux, יש מקשי קיצור מסוימים שמתנגשים עם מקשי הקיצור שמוגדרים כברירת מחדל ב-Linux ועם מקשי הקיצור של מנהלי חלונות פופולריים, כמו KDE ו-GNOME. יכול להיות שמקשי הקיצור האלה שמתנגשים לא יפעלו כמצופה ב-Android Studio.

מידע נוסף על הבעיה הזו (כולל פתרונות אפשריים) זמין בכלי למעקב אחרי באגים של IntelliJ.

טקסט קטן בממשק המשתמש ב-ChromeOS

ב-ChromeOS, יכול להיות שהטקסט יופיע קטן יותר בהשוואה לגרסאות קודמות. כדי לעקוף את הבעיה:

  1. פותחים את חלון ההגדרות על ידי לחיצה על קובץ > הגדרות.
  2. עוברים אל מראה והתנהגות > מראה.
  3. בוחרים באפשרות שימוש בגופן מותאם אישית.
  4. להגדיל את גודל הגופן.
  5. בחלון הגדרות, עוברים אל עורך > גופן.
  6. להגדיל את גודל הגופן.
  7. לוחצים על אישור.

עריכת קוד

בקטע הזה מתוארות בעיות מוכרות שקשורות לעורך הקוד.

קלט מקלדת קפוא – בעיות ב-iBus ב-Linux

יש כמה אינטראקציות ידועות בין שירות ה-daemon של iBus ב-Linux לבין Android Studio. במקרים מסוימים, סביבת הפיתוח המשולבת מפסיקה להגיב לקלט מהמקלדת או מתחילה להזין תווים אקראיים. הבאג הזה מופעל בגלל סנכרון חסר בין iBus לבין XLib + AWT, והוא כבר דווח ל-JetBrains ול-iBus. יש שלוש דרכים לעקוף את הבעיה הזו:

  • פתרון עקיף 1: מאלצים את iBus לעבור למצב סינכרוני. לפני שמפעילים את Android Studio, מריצים את הפקודה הבאה בשורת הפקודה:
    $ IBUS_ENABLE_SYNC_MODE=1 ibus-daemon -xrd
  • פתרון עקיף 2: משביתים את קלט iBus ב-Android Studio. כדי להשבית את הקלט של iBus רק ב-Android Studio, מריצים את הפקודה הבאה בשורת הפקודה:
    $ XMODIFIERS= ./bin/studio
    הפתרון הזה משבית רק את שיטות הקלט ב-Android Studio, ולא באפליקציות אחרות שאתם מפעילים. שימו לב: אם תפעילו מחדש את הדמון בזמן ש-Android Studio פועל (למשל, על ידי הפעלת ibus-daemon -rd), למעשה תשביתו את שיטות הקלט לכל שאר האפליקציות, ויכול להיות שגם מכונת ה-JVM של Android Studio תקרוס עם שגיאת פילוח.
  • פתרון עקיף 3: בודקים שוב את קיצורי הדרך כדי לוודא שקיצור הדרך להזנת הקלט הבא לא מוגדר כ-Control+Space, כי זה גם קיצור הדרך להשלמת קוד ב-Android Studio. ב-Ubuntu 14.04 ‏ (Trusty),‏ Super+Space הוא קיצור הדרך שמוגדר כברירת מחדל, אבל יכול להיות שעדיין יש הגדרות מגרסאות קודמות. כדי לבדוק את קישורי קיצורי הדרך, מריצים את הפקודה ibus-setup בשורת הפקודה כדי לפתוח את חלון ההעדפות של IBus. בקטע מקשי קיצור, מסמנים את האפשרות שיטת הקלט הבאה. אם מוגדרים המקשים Control+Space, משנים אותם למקשים Super+Space או לקיצור דרך אחר לפי בחירתכם.

הגדרות אישיות של פרויקט

בקטע הזה מפורטות בעיות מוכרות שקשורות להגדרת הפרויקט ולסנכרון של Gradle.

הסנכרון של Gradle נכשל: צינור שבור

הבעיה היא שתהליך ה-daemon של Gradle מנסה להשתמש ב-IPv4 במקום ב-IPv6.

  • פתרון עקיף 1: ב-Linux, מזינים את הפקודות הבאות ב-~/.profile או ב-~/.bash_profile:
    export _JAVA_OPTIONS="-Djava.net.preferIPv6Addresses=true"
  • פתרון עקיף 2: בקובץ vmoptions של Android Studio, משנים את השורה -Djava.net.preferIPv4Addresses=true ל--Djava.net.preferIPv6Addresses=true. מידע נוסף זמין במדריך למשתמש בנושא IPv6 ברשת.

שגיאות 'peer not authenticated' (העמית לא אומת) מסנכרון Gradle או מ-SDK Manager

הסיבה העיקרית לשגיאות האלה היא אישור חסר ב-$JAVA_HOME/jre/lib/certificates/cacerts. כדי לפתור את השגיאות האלה, צריך לפעול באופן הבא:

  • אם אתם משתמשים בשרת proxy, נסו להתחבר ישירות. אם החיבור הישיר פועל, יכול להיות שתצטרכו להשתמש ב-keytool כדי להוסיף את האישור של שרת ה-proxy לקובץ cacerts כדי להתחבר דרך ה-proxy.
  • מתקינים מחדש JDK נתמך שלא בוצעו בו שינויים. קיימת בעיה מוכרת שמשפיעה על משתמשי Ubuntu, וגורמת לכך ש-/etc/ssl/certs/java/cacerts ריק. כדי לפתור את הבעיה, מריצים את הפקודה הבאה בשורת הפקודה:
    sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure

פריסה

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

‫[Mac OS בלבד] עדכונים מצטברים לא מוחלים בגלל בעיה במעקב אחר קובץ Gradle בפרויקטים שנשמרו ב-/System/Volumes/Data

בעיה מספר 18149 ב-Gradle משפיעה על Android Gradle Plugin מגרסה 7.0 ואילך, כי נדרשת גרסה 7.0 ואילך של Gradle. החל מ-Gradle 7.0, מעקב אחרי קבצים מופעל כברירת מחדל. אם אתם עובדים ב-Mac OS והפרויקט שלכם נשמר בתיקייה /System/Volumes/Data, המעקב של Gradle אחרי שינויים בקבצים לא יפעל כמו שצריך. כתוצאה מכך, מערכת ה-Build לא תזהה שינויים בקבצים ולכן לא תעדכן את חבילות ה-APK. לאחר מכן, קוד הפריסה המצטברת לא יעשה דבר כי מצב ה-APK המקומי זהה למצב ה-APK במכשיר.

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

‫Android Emulator HAXM ב-macOS High Sierra

כדי להבטיח את התאימות והיציבות הטובות ביותר עם macOS, אמולטור Android ב-macOS High Sierra (גרסה 10.13) דורש HAXM בגרסה 6.2.1 ואילך. עם זאת, ב-macOS 10.13 התהליך של התקנת תוספי ליבה כמו HAXM מורכב יותר. צריך לאפשר באופן ידני את ההתקנה של תוסף הליבה עצמו באופן הבא:

  1. קודם כל, מנסים להתקין את הגרסה האחרונה של HAXM מSDK Manager.
  2. ב-MacOS, עוברים אל העדפות המערכת > אבטחה ופרטיות.
  3. אם מוצגת האזהרה אפשרות הטעינה נחסמה לתוכנת המערכת מהמפתח Intel Corporation Apps, לוחצים על Allow (אישור):

מידע נוסף ופתרונות עקיפים זמינים בדף האינטרנט הזה של Apple וב בעיה מספר 62395878.

החלת השינויים

בקטע הזה מתוארות בעיות מוכרות שקשורות להחלת שינויים.

השם החדש של האפליקציה לא הוחל

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

בעיה בסביבת זמן הריצה של Android גורמת לשגיאה

אם אתם משתמשים במכשיר עם Android בגרסה 8.0 או 8.1, יכול להיות שתיתקלו בהודעות 'VERIFICATION_ERROR' כשאתם מנסים לבצע שינויים מסוימים (במיוחד אם אתם משתמשים ב-Kotlin). ההודעה הזו נובעת מבעיה ב-Android Runtime שתוקנה ב-Android מגרסה 9.0 ואילך. למרות שהבעיה גורמת לכך שהאפשרות 'החלת שינויים' לא פועלת, עדיין אפשר להפעיל את האפליקציה סמל ההרצה שוב כדי לראות את השינויים. עם זאת, מומלץ לשדרג את המכשיר ל-Android מגרסה 9.0 ואילך.

ניפוי באגים ובדיקות

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

חסרים משאבים בנתיב המחלקה בבדיקות JUnit כשמריצים אותן מ-Android Studio

אם יש לכם תיקיות משאבים ספציפיות במודולי Java, המשאבים האלה לא יימצאו כשמריצים בדיקות מ-IDE. אפשר להריץ בדיקות באמצעות Gradle משורת הפקודה. אפשר גם להריץ את משימת Gradle‏ check מ-IDE. מידע נוסף

הבעיה הזו מתרחשת כי החל מ-IntelliJ 13, נדרש שיהיה רק תיקייה אחת כנתיב המחלקה. כלי הבנייה של IntelliJ מעתיק את כל המשאבים לתיקיית הבנייה, אבל Gradle לא מעתיק את המשאבים.

  • פתרון עקיף 1: מריצים את המשימה Gradle check מ-IDE במקום להריץ בדיקת יחידה.
  • פתרון עקיף 2: מעדכנים את סקריפט ה-build כדי להעתיק משאבים באופן ידני לתיקיית ה-build. מידע נוסף זמין בתגובה מספר 13.

יכול להיות שהרצת בדיקות JUnit תגרום לקומפילציה של הקוד פעמיים

כשיוצרים פרויקט חדש, יכול להיות שהגדרת התבנית JUnit תיצור שני שלבים של 'לפני ההפעלה': Make ו-Gradle-aware Make. ההגדרה הזו מועברת לכל ההגדרות של JUnit run שנוצרו.

  • כדי לפתור את הבעיה בפרויקט הנוכחי, לוחצים על Run > Edit Configurations ומשנים את הגדרת ברירת המחדל של JUnit כך שתכלול רק את השלב Gradle-aware Make.
  • כדי לפתור את הבעיה בכל הפרויקטים העתידיים, לוחצים על File > Close Project (קובץ > סגירת הפרויקט). יוצג מסך הפתיחה. אחר כך לוחצים על הגדרה > ברירות מחדל של הפרויקט > הגדרות הרצה ומשנים את ההגדרה של JUnit כך שתכלול רק את השלב Gradle-aware Make.

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

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

  • הגדרות הפעלה של Gradle (עם לוגו Gradle כסמל) לא פועלות.
  • הגדרות הפעלה של JUnit (עם סמל ללא Android ירוק) לא חלות על בדיקות מכשור, שלא ניתן להפעיל ב-JVM המקומי.
בנוסף, Android Studio זוכר את הגדרות ההפעלה שנוצרו בהקשר מסוים (למשל, לחיצה ימנית על מחלקה או שיטה ספציפית), ולא יציע להפעיל בהגדרות שונות בעתיד. כדי לפתור את הבעיה, לוחצים על Run > Edit Configurations (הפעלה > עריכת הגדרות) ומסירים את ההגדרות שנוצרו בצורה שגויה.

הוספת נקודות עצירה (breakpoint) ב-Java במהלך ניפוי באגים בקוד מקורי

אם האפליקציה מושהית בנקודת עצירה בקוד המקורי, יכול להיות שהמאגחים Auto ו-Dual לא יזהו באופן מיידי נקודות עצירה חדשות ב-Java שהגדרתם. כדי להימנע מהבעיה הזו, מוסיפים נקודות עצירה של Java לפני שמתחילים סשן ניפוי באגים או בזמן שהאפליקציה מושהית בנקודת עצירה של Java. מידע נוסף זמין בבעיה מספר 229949.

יציאה מכלי ניפוי הבאגים המקורי

אם משתמשים במאבחן הבאגים אוטומטי או כפול כדי לאתר באגים בקוד Java ובקוד מקורי, ואז נכנסים לפונקציה מקורית מתוך קוד Java (לדוגמה, מאבחן הבאגים משהה את ההרצה בשורה בקוד Java שקוראת לפונקציה מקורית, ואז לוחצים על Step Into ) ורוצים לחזור לקוד Java, לוחצים על Resume Program (במקום על Step Out או על Step Over ). תהליך האפליקציה עדיין יושהה, לכן צריך ללחוץ על Resume Program בכרטיסייה your-module-java כדי להמשיך אותו. מידע נוסף זמין בבעיה מספר 224385.

הניפוי באגים המקורי נתקע בזמן טעינת הספריות

כשמשתמשים בפעם הראשונה במאבחן הבאגים המקורי אחרי שמשדרגים ל-Android Studio 4.2 ומעלה, יכול להיות שמאבחן הבאגים המקורי יפסיק להגיב בזמן טעינת ספריות ממכשיר Android. הבעיה הזו היא בעיה מתמשכת שקורית גם אם מפסיקים ומפעילים מחדש את מאתר הבאגים. כדי לפתור את הבעיה, צריך למחוק את מטמון LLDB בכתובת $USER/.lldb/module-cache/.

כלי ניפוי הבאגים המקורי קורס עם ההודעה 'תהליך ניפוי הבאגים הסתיים עם קוד יציאה 127'

השגיאה הזו מתרחשת בפלטפורמות מבוססות-Linux כשמפעילים את מאתר הבאגים המקורי. ההודעה מציינת שאחת מהספריות שנדרשות למנפה הבאגים המקומי לא מותקנת במערכת המקומית. יכול להיות שהשם של הספרייה החסרה כבר מופיע בקובץ idea.log. אם לא, אפשר להשתמש במסוף כדי לעבור לספריית ההתקנה של Android Studio ולהריץ את שורת הפקודה bin/lldb/bin/LLDBFrontend --version כדי לגלות אילו ספריות חסרות. בדרך כלל, הספרייה החסרה היא ncurses5, כי חלק מהפצות Linux האחרונות כבר שודרגו ל-ncurses6.

כלי לניתוח ביצועים (profiler)

בקטע הזה מתוארות בעיות מוכרות בכלי הפרופילים.

Native Memory Profiler: הפרופיילינג לא זמין במהלך הפעלת האפליקציה

הכלי Native Memory Profiler לא זמין כרגע במהלך הפעלת האפליקציה. האפשרות הזו תהיה זמינה בגרסה הקרובה.

כפתרון עקיף, אפשר להשתמש בכלי פרופילים עצמאי של שורת הפקודה Perfetto כדי ללכוד פרופילים של הפעלה.

שגיאות של פסק זמן בכלי לניתוח ביצועי ה-CPU

יכול להיות שתיתקלו בשגיאות 'ההקלטה לא הופסקה' ב-CPU Profiler של Android Studio כשבוחרים בהגדרות Sample Java Methods או Trace Java Methods. לרוב אלה שגיאות שקשורות לפסק זמן, במיוחד אם רואים את הודעת השגיאה הבאה בקובץ idea.log:

Wait for ART trace file timed out

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

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

חריגת ADB במהלך ניפוי באגים או יצירת פרופיל

כשמשתמשים ב-Platform Tools 29.0.3, יכול להיות שהניפוי באגים המקורי והכלי Profilers של Android Studio לא יפעלו כמו שצריך, ויכול להיות שתופיע הודעת השגיאה AdbCommandRejectedException או Failed to connect port בקובץ כשבוחרים באפשרות Help > Show Log (עזרה > הצגת יומן).idea.log שדרוג כלי הפלטפורמה לגרסה 29.0.4 ואילך פותר את שתי הבעיות.

כדי לשדרג את כלי הפלטפורמה:

  1. פותחים את SDK Manager מ-Android Studio בלחיצה על Tools > SDK Manager (כלים > SDK Manager) או על SDK Manager (SDK Manager) בסרגל הכלים.
  2. מסמנים את התיבה לצד Android SDK Platform-Tools כך שיופיע בה סימן אישור. סמל ההורדה אמור להופיע בעמודה הימנית.
  3. לוחצים על אישור או על החלה.

פלאגין מונע את הפעולה של חלון Build Output

השימוש בתוסף CMake simple highlighter מונע את הצגת התוכן בחלון Build Output. הגרסה מתבצעת והכרטיסייה Build Output (פלט בנייה) מופיעה, אבל לא מודפס פלט (בעיה מספר 204791544).

סדר ההתקנה מונע את ההפעלה

אם מתקינים גרסה חדשה יותר של Android Studio לפני גרסה ישנה יותר, יכול להיות שהגרסה הישנה לא תופעל. לדוגמה, אם מתקינים קודם את גרסת Canary של Android Studio, ואז מנסים להתקין ולהפעיל את הגרסה היציבה, יכול להיות שהגרסה היציבה לא תופעל. במקרים כאלה, צריך לנקות את הזיכרון כדי להפעיל את הגרסה היציבה (הישנה יותר). ב-macOS, כדי לנקות את המטמון, מוחקים את הספרייה Library/ApplicationSupport/Google/AndroidStudioversion_number. ב-Windows, כדי לנקות את המטמון משתמשים בניקוי הדיסק.

‫Espresso Test Recorder לא עובד עם Compose

Espresso Test Recorder לא פועל עם פרויקטים שכוללים Compose. כדי ליצור בדיקות של ממשק המשתמש לפרויקטים שכוללים Compose, אפשר לעיין במאמר בדיקת פריסת Compose.

מקש הקיצור של Logcat מתנגש עם פריסות מקלדת שאינן באנגלית

אם אתם משתמשים בפריסת מקלדת בשפה שאינה אנגלית, יכול להיות שמקש קיצור ברירת המחדל של Logcat יתנגש עם הפריסה וימנע מכם להקליד תווים מסוימים כשאתם עורכים טקסט ב-Android Studio. כדי לעקוף את הבעיה הזו, צריך למחוק או למפות מחדש את מיפוי המקשים של Logcat שגורם לבעיה. כדי לערוך את מיפוי המקשים של Logcat ב-Android Studio, עוברים אל Android Studio > Settings > Keymap (Android Studio > הגדרות > מיפוי מקשים) ומחפשים את Logcat ברשימת מיפויי המקשים. מידע נוסף זמין בבעיה מספר 263475910.

הבעיה הזו תיפתר בהסרה של קיצור הדרך Logcat ב-Android Studio Electric Eel Patch 1.

בעיות מוכרות בפלאגין של Android Gradle

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

לא כל התלויות בספרייה של תכונות דינמיות נבדקות על ידי Lint

כשמריצים את lint עם checkDependencies = true ממודול של אפליקציה, לא נבדקות תלויות בספריית תכונות דינמיות, אלא אם הן גם תלויות באפליקציה (בעיה מספר 191977888). כפתרון עקיף, אפשר להריץ את משימת ה-lint בספריות האלה.

חתימה על קובץ ששמו מכיל תווים של חזרה לתחילת השורה

חתימה על קובץ JAR (סכימה v1) לא תומכת בשמות קבצים שמכילים תווים של מעבר שורה (בעיה מספר 63885809).

יכול להיות ששינוי של נתוני פלט של וריאנטים בזמן הבנייה לא יעבוד

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

// If you use each() to iterate through the variant objects,
// you need to start using all(). That's because each() iterates
// through only the objects that already exist during configuration time—
// but those object don't exist at configuration time with the new model.
// However, all() adapts to the new model by picking up object as they are
// added during execution.
android.applicationVariants.all { variant ->
    variant.outputs.all {
        outputFileName = "${variant.name}-${variant.versionName}.apk"
    }
}

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

המאפיין manifestOutputFile לא זמין יותר

השיטה processManifest.manifestOutputFile() לא זמינה יותר, ואם תנסו להשתמש בה תקבלו את השגיאה הבאה:

A problem occurred configuring project ':myapp'.
   Could not get unknown property 'manifestOutputFile' for task
   ':myapp:processDebugManifest' of type
   com.android.build.gradle.tasks.ProcessManifest.

במקום להתקשר אל manifestOutputFile() כדי לקבל את קובץ המניפסט לכל וריאציה, אפשר להתקשר אל manifestOutputFile() כדי לקבל את הנתיב של הספרייה שמכילה את כל המניפסטים שנוצרו.processManifest.manifestOutputDirectory() אחר כך תוכלו לאתר מניפסט ולהחיל עליו את הלוגיקה שלכם. בדוגמה הבאה, קוד הגרסה משתנה באופן דינמי במניפסט:

android.applicationVariants.all { variant ->
    variant.outputs.all { output ->
        output.processManifest.doLast {
            // Stores the path to the maifest.
            String manifestPath = "$manifestOutputDirectory/AndroidManifest.xml"
            // Stores the contents of the manifest.
            def manifestContent = file(manifestPath).getText()
            // Changes the version code in the stored text.
            manifestContent = manifestContent.replace('android:versionCode="1"',
                    String.format('android:versionCode="%s"', generatedCode))
            // Overwrites the manifest with the new text.
            file(manifestPath).write(manifestContent)
        }
    }
}

בעיות בתמיכה ב-AGP 7.3.0 AIDL וב-Kotlin 1.7.x

שימוש ב-AGP 7.3.0 עם KAPT ב-Kotlin 1.7.x גורם להסרה של קבוצות מקור של AIDL עבור וריאציות ספציפיות של build. עדיין אפשר להשתמש במערכות אחרות של קבצי מקור AIDL, כולל אלה של main/, סוגי build, טעמי מוצר ושילובים של טעמי מוצר. אם אתם צריכים להשתמש במערכי מקור של AIDL ספציפיים לגרסאות, המשיכו להשתמש ב-Kotlin 1.6.21.

בעיות מוכרות שתוקנו

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

תוקן ב-Android Studio 2021.1.1

  • חסר פלט של lint: לא מודפס פלט טקסט של lint ב-stdout כשהמשימה של lint היא UP-TO-DATE (בעיה מס' 191897708). תוקן ב-AGP 7.1.0-alpha05.
  • בעיות בבדיקת יחידות של פרויקט אפליקציה שמשתמש בתוסף Hilt: נתיב המחלקה של בדיקת היחידות מכיל את מחלקות האפליקציה שלא עברו אינסטרומנטציה, כלומר Hilt לא מבצע אינסטרומנטציה של מחלקות האפליקציה כדי לטפל בהזרקת תלות כשמריצים בדיקות יחידות (בעיה מספר 213534628). הבעיה הזו תוקנה ב-AGP 7.1.1.

תוקן ב-Android Studio 2020.3.1

  • חריגים של Lint בפרויקטים של Kotlin: בפרויקטים של Kotlin שמוגדר בהם checkDependencies = true עשויים להופיע חריגים או שגיאות של מצביע null (בעיה מספר 158777858).

תוקן ב-Android Studio 4.2

  • ממשק IDE קופא ב-macOS Big Sur: יכול להיות ש-Android Studio 4.1 יקפא כשפותחים תיבת דו-שיח.

תוקן ב-Android Studio 4.1

  • הפעלה מחדש כדי להחיל את הגדרות הזיכרון מגרסה קודמת של סביבת הפיתוח המשולבת: אחרי עדכון Android Studio, צריך להפעיל מחדש את Android Studio כדי להחיל את הגדרות הזיכרון שהועברו מגרסה קודמת של סביבת הפיתוח המשולבת.
  • יצירת מחלקת מניפסט עם מחרוזות הרשאות מותאמות אישית לא מתבצעת יותר כברירת מחדל: אם רוצים ליצור את המחלקה, צריך להגדיר את android.generateManifestClass = true.

תוקן ב-Android Studio 3.6

  • שגיאה בהתקנת APK ב-LineageOS: פריסת האפליקציה במכשירים עם גרסאות מסוימות של LineageOS או CyanogenMod עלולה להיכשל ולהחזיר חריגה מסוג INSTALL_PARSE_FAILED_NOT_APK.

    ב-Android Studio 3.6 Beta 1 ואילך, סביבת הפיתוח המשולבת (IDE) מטפלת בחריגה הזו על ידי ביצוע התקנה מלאה של האפליקציה כשפורסים את האפליקציה במכשירי LineageOS או CyanogenMod, מה שעלול להאריך את זמן הפריסה.

תוקן ב-Android Studio 3.5.2

  • סגנון קוד XML פגום: כשעורכים קוד XML, סביבת הפיתוח המשולבת (IDE) החילה סגנון קוד שגוי כשבוחרים באפשרות קוד > עיצוב מחדש של הקוד מסרגל התפריטים.

תוקן ב-Android Studio 3.3.1

  • שגיאות שקשורות לחוסר זיכרון בזמן סריקה של פרויקטים שמבוססים על C++‎: כש-Gradle סורק פרויקט שיש בו קוד C++‎ ביותר ממיקום אחד באותו כונן, הסריקה כוללת את כל הספריות שמתחת לספרייה המשותפת הראשונה. סריקה של מספר גדול של ספריות וקבצים עלולה לגרום לשגיאות שקשורות לזיכרון.

    למידע נוסף על הבעיה הזו, אפשר לקרוא על הבאג שקשור אליה.