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

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

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

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

בקטע הזה מתוארות בעיות מוכרות ב-Android Studio.

גרסה 3 של Android Studio Panda לא תואמת לגרסה 1.2.0 של הפלאגין IntelliJ Develocity

כשמשתמשים בפלאגין Develocity IDE בגרסה 1.2.0, החל מ-Android Studio Panda 3 Canary 1, פעולת ההרצה נכשלת עם השגיאה הבאה (בעיה מספר 492439205):

Found interface com.android.tools.idea.gradle.project.build.invoker.GradleBuildInvoker$Request, but class was expected

המפתחים של Develocity עובדים על תיקון לגרסה החדשה.

פתרון עקיף: השבתת הפלאגין Develocity IDE בגרסה 1.2.0 פותרת את הבעיה עד שהיא תתוקן בגרסה חדשה של הפלאגין.

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

כשמשתמשים ב-Kotlin 2.0, אי אפשר לפתור ביטויי lambda, וה-Layout Inspector לא יכול לנווט לקוד המקור של ביטוי ה-lambda כרגיל.

פתרון עקיף: מוסיפים את אפשרות המהדר הבאה כפתרון עקיף עד שהבעיה תיפתר:

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

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

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

הפעולה 'Apply Changes & Restart Activity' לא מפעילה מחדש את ה-Activity במכשירים או באמולטורים עם רמת API 35

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

מוצגת הודעת שגיאה בחלון של Firebase Assistant

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

אי אפשר לבודד תצוגה באמצעות Layout Inspector

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

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

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

שגיאה ברינדור של תצוגה מקדימה של 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. אם התהליך הזה נכשל, יכול להיות שה-IDE לא יופעל אצל משתמשים מסוימים שהגדירו אפשרויות 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). בכרטיסייה SDK Platforms, מסמנים את התיבה 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 ו-Beta של Android Studio היא PreviewX.Y במקום X.Y ב-<version>. לדוגמה, גרסאות Canary של Android Studio 4.1 משתמשות ב-AndroidStudioPreview4.1, במקום בספרייה AndroidStudio4.1 שמשמשת לגרסאות מועמדות להפצה ולגרסאות יציבות.

בעיית קומפילציה בפרויקטים של Kotlin Multiplatform

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

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

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

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

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

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

  1. פותחים את החלון Settings (הגדרות) בלחיצה על File > Settings (קובץ > הגדרות).
  2. עוברים אל Appearance & Behavior > Appearance.
  3. בוחרים באפשרות שימוש בגופן מותאם אישית.
  4. להגדיל את גודל הגופן.
  5. בחלון Settings, עוברים אל Editor > Font.
  6. להגדיל את גודל הגופן.
  7. לוחצים על אישור.

עריכת קוד

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

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

יש כמה אינטראקציות ידועות בין הדימון (daemon) של iBus ב-Linux לבין Android Studio. במקרים מסוימים, ה-IDE מפסיק להגיב לקלט מהמקלדת או מתחיל להזין תווים אקראיים. הבאג הזה נגרם בגלל חוסר סנכרון בין 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, ולא באפליקציות אחרות שפועלות. שימו לב שאם מפעילים מחדש את הדימון (daemon) בזמן ש-Android Studio פועל (לדוגמה, על ידי הפעלת ibus-daemon -rd), משביתים בפועל את שיטות הקלט לכל האפליקציות האחרות, ועלולים גם לגרום לקריסה של ה-JVM של Android Studio עם שגיאת segmentation fault.
  • פתרון עקיף 3: בודקים שוב את קיצורי הדרך כדי לוודא שקיצור הדרך לקלט הבא לא מוגדר ל-Control+Space, כי זה גם קיצור הדרך להשלמת הקוד ב-Android Studio. ב-Ubuntu 14.04 (Trusty)‎, מקש הרווח + Super הוא קיצור הדרך שמוגדר כברירת מחדל, אבל יכול להיות שההגדרות מגרסאות קודמות עדיין קיימות. כדי לבדוק את קיצורי הדרך, מריצים את הפקודה 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, נסו להתחבר ישירות. אם החיבור הישיר עובד, כדי להתחבר דרך שרת ה-proxy יכול להיות שתצטרכו להשתמש ב-keytool כדי להוסיף את האישור של שרת ה-proxy לקובץ cacerts.
  • מתקינים מחדש 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 משפיעה על גרסאות 7.0 ומעלה של הפלאגין של Android Gradle, כי הן דורשות את גרסה 7.0 ומעלה של Gradle. החל מגרסה 7.0 של Gradle, התכונה "מעקב אחרי קבצים" מופעלת כברירת מחדל. אם אתם עובדים ב-Mac OS והפרויקט שלכם שמור ב-/System/Volumes/Data, מעקב הקבצים של Gradle לא יעקוב כמו שצריך אחרי שינויים בקבצים. במצב כזה, מערכת ה-Build לא תזהה שינויים בקבצים, ולכן לא תעדכן את חבילות ה-APK. קוד הפריסה המצטברת לא יעשה כלום כי מצב ה-APK המקומי זהה למצב במכשיר.

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

אמולטור Android‏ HAXM ב-macOS High Sierra

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

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

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

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

בקטע הזה מתוארות בעיות מוכרות שקשורות ל-Apply Changes.

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

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

בעיה בסביבת זמן ריצה ל-Android‏ (ART) גורמת לשגיאה

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

כשמשתמשים בכלי לניפוי באגים Auto או Dual כדי לנפות באגים בקוד Java ובקוד Native, אם נכנסים לפונקציית Native מקוד Java (לדוגמה, הכלי לניפוי באגים משהה את ההרצה בשורה בקוד Java שקוראת לפונקציית Native, ואתם לוחצים על 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/.

כלי ניפוי הבאגים המקורי קורס עם ההודעה "Debugger process finished with exit code 127"

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

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

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

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

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

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

שגיאות של זמן קצוב לתפוגה ב-CPU Profiler

יכול להיות שתופיע הודעת השגיאה "Recording failed to stop" ב-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, יכול להיות שכלי הפרופיילינג של Android Studio וניפוי באגים מקורי לא יפעלו כמו שצריך, ויכול להיות שיופיעו השגיאות "AdbCommandRejectedException" או "Failed to connect port" בקובץ idea.log כשבוחרים באפשרות Help > Show Log. שדרוג של Platform Tools לגרסה 29.0.4 ואילך פותר את שתי הבעיות.

כדי לשדרג את Platform Tools:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// 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() כדי לקבל את קובץ המניפסט של כל וריאנט, אתם יכולים להפעיל את 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)
        }
    }
}

בעיות בתמיכה ב-AIDL ב-AGP 7.3.0 וב-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 Rabbit 1 Canary 5

  • הפעלה מקבילה של סנכרון Gradle: ב-Android Studio Quail 1, המאפיין org.gradle.parallel=true ב-gradle.properties כבר לא מפעיל אחזור מודלים מקביל במהלך סנכרון Gradle כשמשתמשים ב-Gradle בגרסה 9.4 ואילך. התוצאה הייתה רגרסיה בזמן הסנכרון של פרויקטים גדולים. המאפיין החדש org.gradle.tooling.parallel יפעיל אחזור מודלים מקביל, אבל לא לבוני המודלים של IDEA. ההגבלה הזו הוסרה.

הבעיה תוקנה ב-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

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

הבעיה תוקנה ב-Android Studio 4.1

  • הפעלה מחדש כדי להחיל את הגדרות הזיכרון מהגרסה הקודמת של סביבת הפיתוח המשולבת (IDE): אחרי שמעדכנים את Android Studio, צריך להפעיל אותה מחדש כדי להחיל את הגדרות הזיכרון שהועברו מגרסה קודמת של סביבת הפיתוח המשולבת (IDE).
  • כברירת מחדל, לא נוצרת יותר מחלקת מניפסט עם מחרוזות של הרשאות בהתאמה אישית: אם רוצים ליצור את המחלקה, צריך להגדיר את 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) מחילה סגנון קוד שגוי כשבוחרים באפשרות Code > Reformat Code מסרגל התפריטים.

תוקן ב-Android Studio 3.3.1

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

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