مشکلات شناخته شده Android Studio و Android Gradle Plugin

این صفحه مشکلات شناخته‌شده‌ی اندروید استودیو Narwhal 4 Feature Drop و افزونه‌ی اندروید Gradle نسخه‌ی ۸.۱۳.۰ را پیگیری می‌کند. اگر با مشکلی مواجه شدید که در اینجا ذکر نشده است، لطفاً آن را گزارش دهید .

ارتقا به پیش‌نمایش: هر نسخه از اندروید استودیو و افزونه اندروید گریدل با هدف بهبود پایداری و عملکرد و افزودن ویژگی‌های جدید منتشر می‌شود. برای تجربه مزایای نسخه‌های آینده، همین حالا پیش‌نمایش اندروید استودیو را دانلود و نصب کنید.

مشکلات شناخته شده با اندروید استودیو

این بخش مشکلات شناخته‌شده‌ای را که در آخرین نسخه پایدار اندروید استودیو وجود دارند، شرح می‌دهد.

کاتلین ۲.۰: لامداها را نمی‌توان در Layout Inspector حل کرد

هنگام استفاده از کاتلین ۲.۰، لامبداها قابل تفسیر نیستند و Layout Inspector نمی‌تواند طبق معمول به کد منبع لامبدا برود.

راه حل : گزینه کامپایلر زیر را به عنوان راه حل اضافه کنید تا این مشکل برطرف شود:

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

اجرای پیکربندی بدون "قبل از راه‌اندازی" Gradle-aware منجر به خطای استقرار می‌شود

مشکلی در Android Studio Ladybug Feature Drop Canary 9 وجود داشت که اطلاعات پیکربندی اجرا را از پروژه‌هایی که با آن نسخه باز شده بودند، حذف می‌کرد. اگر پروژه خود را در مقطعی با آن نسخه باز کردید و اجرای برنامه شما منجر به خطای "loading build artifacts" شد، بررسی کنید که پیکربندی اجرای فعال، مرحله "Gradle-aware Make" را در بخش "Before launch" داشته باشد. برای تأیید این موضوع، روی Run/Debug Configurations > Edit Configurations کلیک کنید، روی پیکربندی اجرای فعال کلیک کنید و تأیید کنید که مرحله "Gradle-aware Make" در بخش "Before launch" وجود دارد. متأسفانه اندروید استودیو نمی‌تواند این مشکل را به طور خودکار برطرف کند زیرا ممکن است برخی از پیکربندی‌های اجرا عمداً بدون مرحله "Gradle-aware Make" تنظیم شده باشند.

«اعمال تغییرات و راه‌اندازی مجدد فعالیت» فعالیت را در دستگاه‌ها یا شبیه‌سازهای سطح API 35 مجدداً راه‌اندازی نمی‌کند.

وقتی تغییرات کد را با استفاده از «اعمال تغییرات و راه‌اندازی مجدد فعالیت» در یک دستگاه API 35 اعمال می‌کنید، برنامه مجدداً راه‌اندازی نمی‌شود و تأثیر تغییرات را مشاهده نخواهید کرد. اگر برنامه را دوباره اجرا کنید، تأثیر تغییرات کد را مشاهده خواهید کرد. تیم ما به طور فعال در حال بررسی این موضوع است.

پنجره دستیار فایربیس یک پیام خطا نمایش می‌دهد

اگر پنجره دستیار فایربیس (Tools > Firebase از منوی اصلی) پیام خطایی را نمایش داد، حافظه‌های پنهان (cache) را نامعتبر کنید و اندروید استودیو را مجدداً راه‌اندازی کنید تا خطا برطرف شود.

نمی‌توان با استفاده از Layout Inspector یک نما را ایزوله کرد

امکان جداسازی یک نما با استفاده از Layout Inspector تعبیه‌شده موقتاً در دسترس نیست. ما در حال تلاش برای رفع این مشکل در نسخه‌های آینده هستیم.

همه گره‌های Compose با استفاده از Layout Inspector قابل بررسی نیستند.

اگر متوجه شدید که هنگام استفاده از Layout Inspector همه گره‌های Compose قابل بررسی نیستند، احتمالاً به دلیل اشکالی است که در Compose نسخه ۱.۵.۰-alpha۰۴ برطرف شده است. اگر با این مشکل مواجه هستید، مطمئن شوید که Compose نسخه ۱.۵.۰-alpha۰۴ یا بالاتر را ارتقا داده‌اید.

خطا هنگام رندر کردن پیش‌نمایش نوشتن

با شروع از Android Studio Chipmunk، اگر در پنل issues با 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 در ماژول خود اضافه کرده‌اید.

اگر در پنل issues با java.lang.NoClassDefFoundError: Could not initialize class androidx.customview.poolingcontainer.PoolingContainer یا java.lang.NoClassDefFoundError: androidx/customview/poolingcontainer/PoolingContainerListener مواجه می‌شوید، مطمئن شوید که وابستگی debugImplementation را به androidx.customview:customview-poolingcontainer در ماژول خود اضافه کرده‌اید.

خطا هنگام استفاده از رمزهای عبور مختلف برای کلید و فروشگاه کلید

از نسخه ۴.۲ به بعد، اندروید استودیو اکنون روی JDK 11 اجرا می‌شود. این به‌روزرسانی باعث تغییر رفتاری اساسی در رابطه با کلیدهای امضا می‌شود.

وقتی به مسیر Build > Generate Signed Bundle / APK می‌روید و سعی می‌کنید امضای برنامه را برای یک بسته برنامه یا یک APK پیکربندی کنید، وارد کردن رمزهای عبور مختلف برای کلید و keystore ممکن است منجر به خطای زیر شود:

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

برای حل این مشکل، رمز عبور یکسانی را هم برای کلید و هم برای keystore وارد کنید.

اندروید استودیو بعد از نصب نسخه ۴.۲ اجرا نمی‌شود

استودیو سعی می‌کند فایل‌های .vmoptions قبلی را وارد کرده و آن‌ها را برای کار با garbage collector مورد استفاده JDK 11 پاکسازی کند. اگر این فرآیند با شکست مواجه شود، ممکن است IDE برای برخی از کاربرانی که گزینه‌های ماشین مجازی سفارشی را در فایل .vmoptions تنظیم می‌کنند، شروع به کار نکند.

برای حل این مشکل، توصیه می‌کنیم گزینه‌های سفارشی را در فایل .vmoptions به صورت کامنت (با استفاده از کاراکتر "#") قرار دهید. فایل .vmoptions را می‌توانید در مکان‌های زیر پیدا کنید:

ویندوز

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

مک‌او‌اس

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

لینوکس

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

اگر استودیو پس از امتحان کردن این راه حل هنوز شروع به کار نکرد، به بخش «استودیو پس از ارتقا شروع نمی‌شود» در زیر مراجعه کنید.

برنامه‌هایی که از Database Inspector استفاده می‌کنند، در شبیه‌ساز اندروید ۱۱ از کار می‌افتند

برنامه‌هایی که از Database Inspector استفاده می‌کنند، ممکن است هنگام اجرا روی شبیه‌ساز اندروید ۱۱ دچار مشکل شوند و خطایی مانند زیر در logcat ظاهر شود:

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

برای رفع این مشکل، شبیه‌ساز اندروید ۱۱ خود را با رفتن به Tools > SDK Manager به نسخه ۹ یا بالاتر ارتقا دهید. در تب SDK Platforms ، کادر Show Package Details را علامت بزنید و نسخه ۹ یا بالاتر شبیه‌ساز اندروید ۱۱ را انتخاب کنید.

استودیو بعد از ارتقا شروع به کار نمی‌کند

اگر استودیو بعد از ارتقا شروع به کار نکرد، مشکل ممکن است به دلیل پیکربندی نامعتبر اندروید استودیو وارد شده از نسخه قبلی اندروید استودیو یا یک افزونه ناسازگار باشد. به عنوان یک راه حل، بسته به نسخه اندروید استودیو و سیستم عامل، پوشه زیر را حذف کنید (یا برای پشتیبان گیری تغییر نام دهید) و دوباره اندروید استودیو را اجرا کنید. این کار اندروید استودیو را به حالت پیش فرض خود بازنشانی می‌کند و تمام افزونه‌های شخص ثالث حذف می‌شوند.

برای اندروید استودیو ۴.۱ و بالاتر:

  • ویندوز: %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

  • لینوکس: ~/.config/Google/AndroidStudio <version> و ~/.local/share/Google/AndroidStudio <version>
    مثال: ~/.config/Google/AndroidStudio4.1 و ~/.local/share/Google/AndroidStudio4.1

برای اندروید استودیو ۴.۰ و نسخه‌های قبل‌تر:

  • ویندوز: %HOMEPATH%\.AndroidStudio <version> \config
    مثال: C:\Users\ your_user_name \.AndroidStudio3.6\config

  • macOS: ~/Library/Preferences/AndroidStudio <version>
    مثال: ~/Library/Preferences/AndroidStudio3.6

  • لینوکس: ~/.AndroidStudio <version> /config
    مثال: ~/.AndroidStudio3.6/config

توجه داشته باشید که دایرکتوری پیکربندی برای نسخه‌های Canary و Beta اندروید استودیو به جای XY برای <version> ، PreviewX.Y است. برای مثال، نسخه‌های Canary اندروید استودیو ۴.۱ از AndroidStudioPreview4.1 استفاده می‌کنند، به جای دایرکتوری AndroidStudio4.1 که برای نسخه‌های کاندید انتشار و پایدار استفاده می‌شود.

مشکل کامپایل در پروژه‌های چند پلتفرمی کاتلین

ممکن است در کد کاتلین MPP به دلیل وجود نمادهای از دست رفته، خطاهای کامپایل رخ دهد. ارتقاء افزونه کاتلین شما به نسخه ۱.۴ باید این مشکل را حل کند.

تداخل نگاشت کلید در لینوکس

در لینوکس، برخی از میانبرهای صفحه کلید با میانبرهای صفحه کلید پیش‌فرض لینوکس و میانبرهای مدیران پنجره محبوب مانند KDE و GNOME در تضاد هستند. این میانبرهای صفحه کلید متضاد ممکن است آنطور که انتظار می‌رود در اندروید استودیو کار نکنند.

اطلاعات بیشتر در مورد این مشکل (از جمله راه‌حل‌های احتمالی) را می‌توانید در ردیاب اشکال IntelliJ بیابید.

متن رابط کاربری کوچک در ChromeOS

در ChromeOS، متن ممکن است بسیار کوچکتر از نسخه‌های قبلی به نظر برسد. برای حل این مشکل، موارد زیر را انجام دهید:

  1. پنجره تنظیمات را با کلیک روی File > Settings باز کنید.
  2. به بخش ظاهر و رفتار > ظاهر بروید.
  3. استفاده از فونت سفارشی را انتخاب کنید.
  4. اندازه فونت را افزایش دهید.
  5. در پنجره تنظیمات ، به ویرایشگر > فونت بروید.
  6. اندازه فونت را افزایش دهید.
  7. روی تأیید کلیک کنید.

ویرایش کد

این بخش مشکلات شناخته‌شده‌ی مربوط به ویرایشگر کد را شرح می‌دهد.

ورودی کیبورد هنگ می‌کند - مشکلات "iBus" در لینوکس

برخی تعاملات شناخته‌شده بین سرویس iBus در لینوکس و اندروید استودیو وجود دارد. در برخی سناریوها، IDE به ورودی صفحه‌کلید پاسخ نمی‌دهد یا شروع به وارد کردن کاراکترهای تصادفی می‌کند. این اشکال به دلیل عدم هماهنگی بین iBus و XLib + AWT ایجاد می‌شود و قبلاً به JetBrains و iBus گزارش شده است. در حال حاضر سه راه حل برای این مشکل وجود دارد:

  • راه حل ۱: iBus را مجبور به قرار دادن در حالت همگام کنید. قبل از شروع اندروید استودیو، دستور زیر را در خط فرمان اجرا کنید:
    $ IBUS_ENABLE_SYNC_MODE=1 ibus-daemon -xrd
  • راه حل دوم: غیرفعال کردن ورودی iBus در اندروید استودیو. برای غیرفعال کردن ورودی iBus فقط برای اندروید استودیو، دستور زیر را در خط فرمان اجرا کنید:
    $ XMODIFIERS= ./bin/studio
    این راه حل فقط متدهای ورودی اندروید استودیو را غیرفعال می‌کند، نه هیچ برنامه دیگری را که ممکن است در حال اجرا باشید. توجه داشته باشید که اگر سرویس را در حین اجرای اندروید استودیو مجدداً راه‌اندازی کنید (برای مثال، با اجرای ibus-daemon -rd )، عملاً متدهای ورودی را برای همه برنامه‌های دیگر غیرفعال می‌کنید و همچنین ممکن است JVM اندروید استودیو را با خطای segmentation از کار بیندازید.
  • راه حل ۳: اتصالات میانبر را دوباره بررسی کنید تا مطمئن شوید که میانبر ورودی Next روی Control+Space تنظیم نشده باشد، زیرا این میانبر تکمیل کد در اندروید استودیو نیز هست. اوبونتو ۱۴.۰۴ (Trusty) Super+Space را میانبر پیش‌فرض قرار می‌دهد، اما تنظیمات نسخه‌های قبلی ممکن است هنوز وجود داشته باشند. برای بررسی اتصالات میانبر، ibus-setup در خط فرمان اجرا کنید تا پنجره IBus Preferences باز شود. در زیر Keyboard Shortcuts ، روش ورودی Next را بررسی کنید. اگر روی Control+Space تنظیم شده است، آن را به Super+Space یا میانبر دیگری به دلخواه خود تغییر دهید.

پیکربندی پروژه

این بخش مشکلات شناخته‌شده‌ی مربوط به پیکربندی پروژه و همگام‌سازی Gradle را شرح می‌دهد.

همگام‌سازی Gradle ناموفق بود: لوله شکسته

مشکل این است که سرویس Gradle سعی دارد به جای IPv6 از IPv4 استفاده کند.

  • راه حل ۱: در لینوکس، کد زیر را در ~/.profile یا ~/.bash_profile خود قرار دهید:
    export _JAVA_OPTIONS="-Djava.net.preferIPv6Addresses=true"
  • راه حل ۲: در فایل vmoptions اندروید استودیو، خط -Djava.net.preferIPv4Addresses=true ‎ را به -Djava.net.preferIPv6Addresses=true ‎ تغییر دهید. برای اطلاعات بیشتر، به راهنمای کاربری Networking IPv6 مراجعه کنید.

خطاهای «همکار احراز هویت نشده» از همگام‌سازی Gradle یا SDK Manager

علت اصلی این خطاها، فقدان گواهی‌نامه در $JAVA_HOME/jre/lib/certificates/cacerts است. برای رفع این خطاها، مراحل زیر را دنبال کنید:

  • اگر از پروکسی استفاده می‌کنید، سعی کنید مستقیماً متصل شوید. اگر اتصال مستقیم کار کرد، برای اتصال از طریق پروکسی، ممکن است لازم باشد از keytool برای اضافه کردن گواهی سرور پروکسی به فایل cacerts استفاده کنید.
  • یک JDK پشتیبانی‌شده و اصلاح‌نشده را دوباره نصب کنید. یک مشکل شناخته‌شده وجود دارد که کاربران اوبونتو را تحت تأثیر قرار می‌دهد و منجر به خالی شدن /etc/ssl/certs/java/cacerts می‌شود. برای حل این مشکل، دستور زیر را در خط فرمان اجرا کنید:
    sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure

استقرار

این بخش مشکلات شناخته‌شده مربوط به استقرار برنامه شما در یک دستگاه متصل را شرح می‌دهد.

[فقط سیستم عامل مک] به دلیل مشکلی در مشاهده فایل Gradle در پروژه‌های ذخیره شده در مسیر /System/Volumes/Data به‌روزرسانی‌های افزایشی اعمال نمی‌شوند.

مشکل Gradle شماره ۱۸۱۴۹، افزونه‌های Gradle اندروید نسخه ۷.۰ و بالاتر را تحت تأثیر قرار می‌دهد، زیرا به Gradle نسخه ۷.۰ و بالاتر نیاز دارند. از Gradle نسخه ۷.۰ به بعد، قابلیت مشاهده فایل به طور پیش‌فرض فعال است. اگر روی سیستم عامل مک کار می‌کنید و پروژه شما در مسیر /System/Volumes/Data ذخیره شده است، قابلیت مشاهده فایل Gradle به درستی تغییرات فایل را ردیابی نمی‌کند. این امر باعث می‌شود که سیستم Build هیچ تغییر فایلی را نبیند و بنابراین APK(ها) را به‌روزرسانی نکند. کد استقرار افزایشی در این صورت هیچ کاری انجام نمی‌دهد زیرا وضعیت APK محلی مشابه وضعیت دستگاه است.

برای حل این مشکل، باید دایرکتوری پروژه خود را به دایرکتوری کاربر خود، یعنی زیر /Users/username ، منتقل کنید. سپس سیستم Build با مشاهده فایل Gradle به درستی از تغییرات فایل مطلع می‌شود و تغییرات تدریجی با موفقیت اعمال می‌شوند.

شبیه‌ساز اندروید HAXM در macOS High Sierra

شبیه‌ساز اندروید در macOS High Sierra (10.13) برای بهترین سازگاری و پایداری با macOS به HAXM 6.2.1+ نیاز دارد. با این حال، macOS 10.13 فرآیند پیچیده‌تری برای نصب افزونه‌های هسته مانند HAXM دارد. شما باید به صورت دستی اجازه دهید افزونه هسته به صورت زیر نصب شود:

  1. ابتدا، سعی کنید آخرین نسخه HAXM را از SDK Manager نصب کنید.
  2. در MacOS، به تنظیمات سیستم > امنیت و حریم خصوصی بروید.
  3. اگر هشداری مبنی بر مسدود شدن بارگیری نرم‌افزار سیستمی توسعه‌دهنده "Intel Corporation Apps" مشاهده کردید، روی Allow کلیک کنید:

برای اطلاعات بیشتر و راه‌حل‌های جایگزین، به این صفحه وب اپل و شماره 62395878 مراجعه کنید.

اعمال تغییرات

این بخش مشکلات شناخته‌شده‌ای را شرح می‌دهد که مربوط به اعمال تغییرات هستند.

نام برنامه جدید اعمال نشده است

اگر نام برنامه خود را تغییر دهید و سپس سعی کنید آن تغییر را اعمال کنید، ممکن است نام به‌روز شده نمایش داده نشود. برای حل این مشکل، روی Run کلیک کنید. آیکون اجرا برای نصب مجدد برنامه و مشاهده تغییرات.

مشکل در زمان اجرای اندروید (Android Runtime) باعث ایجاد خطا می‌شود

اگر از دستگاهی استفاده می‌کنید که اندروید ۸.۰ یا ۸.۱ را اجرا می‌کند، ممکن است هنگام تلاش برای اعمال انواع خاصی از تغییرات (به‌خصوص اگر از کاتلین استفاده می‌کنید) با پیام‌های "VERIFICATION_ERROR" مواجه شوید. این پیام به دلیل مشکلی در زمان اجرای اندروید ایجاد می‌شود که در اندروید ۹.۰ و بالاتر برطرف شده است. اگرچه این مشکل باعث می‌شود اعمال تغییرات با شکست مواجه شود، اما همچنان می‌توانید آن را اجرا کنید. آیکون اجرا برای مشاهده تغییرات، برنامه خود را دوباره اجرا کنید. با این حال، توصیه می‌کنیم دستگاه خود را به اندروید ۹.۰ یا بالاتر ارتقا دهید.

اشکال‌زدایی و آزمایش

این بخش مشکلات شناخته‌شده مربوط به اشکال‌زدایی و آزمایش برنامه شما را شرح می‌دهد.

JUnit هنگام اجرا از اندروید استودیو، منابع از دست رفته در classpath را آزمایش می‌کند.

اگر پوشه‌های منبع خاصی در ماژول‌های جاوای خود دارید، هنگام اجرای تست‌ها از IDE، آن منابع پیدا نمی‌شوند. اجرای تست‌ها با استفاده از Gradle از خط فرمان کار خواهد کرد. اجرای وظیفه check Gradle از IDE نیز کار خواهد کرد. برای جزئیات بیشتر به شماره ۶۴۸۸۷ مراجعه کنید.

این مشکل به این دلیل رخ می‌دهد که از IntelliJ 13 به بعد، که شما فقط باید یک پوشه به عنوان classpath داشته باشید، ایجاد می‌شود. سازنده IntelliJ تمام منابع را در آن پوشه ساخت کپی می‌کند، اما Gradle منابع را کپی نمی‌کند.

  • راه حل ۱: به جای اجرای تست واحد، وظیفه check Gradle را از IDE اجرا کنید.
  • راه حل ۲: اسکریپت ساخت خود را به‌روزرسانی کنید تا منابع را به صورت دستی در پوشه ساخت کپی کنید. برای اطلاعات بیشتر به کامنت شماره ۱۳ مراجعه کنید.

اجرای تست‌های JUnit ممکن است کد را دو بار کامپایل کند

هنگام ایجاد یک پروژه جدید، پیکربندی قالب JUnit ممکن است با دو مرحله "قبل از راه‌اندازی" ایجاد شود: ساخت و ساخت Gradle-aware. این پیکربندی سپس به تمام پیکربندی‌های JUnit ایجاد شده برای اجرا اعمال می‌شود.

  • برای رفع مشکل پروژه فعلی، روی Run > Edit Configurations کلیک کنید و پیکربندی پیش‌فرض JUnit را طوری تغییر دهید که فقط شامل مرحله Gradle-aware Make باشد.
  • برای رفع مشکل برای همه پروژه‌های آینده، روی File > Close Project کلیک کنید. باید صفحه خوشامدگویی را ببینید. سپس روی Configure > Project Defaults > Run Configurations کلیک کنید و پیکربندی JUnit را طوری تغییر دهید که فقط شامل مرحله Gradle-aware Make باشد.

برخی از پیکربندی‌های اجرای آزمایشی کار نمی‌کنند

همه پیکربندی‌های اجرا که با کلیک راست روی یک روش آزمایشی در دسترس هستند، معتبر نیستند. به طور خاص، پیکربندی‌های زیر معتبر نیستند:

  • پیکربندی‌های Gradle run (که لوگوی Gradle را به عنوان آیکون دارند) کار نمی‌کنند.
  • پیکربندی‌های اجرای JUnit (که آیکونی بدون اندروید سبز دارند) برای تست‌های instrumentation اعمال نمی‌شوند، که نمی‌توانند روی JVM محلی اجرا شوند.
اندروید استودیو همچنین پیکربندی اجرای ایجاد شده در یک زمینه خاص (به عنوان مثال، کلیک راست روی یک کلاس یا متد خاص) را به خاطر می‌سپارد و در آینده پیشنهاد اجرا در پیکربندی متفاوتی را نمی‌دهد. برای رفع این مشکل، روی Run > Edit Configurations کلیک کنید و پیکربندی‌های نادرست ایجاد شده را حذف کنید.

اضافه کردن نقاط توقف جاوا هنگام اشکال‌زدایی کد بومی

در حالی که برنامه شما در یک نقطه توقف در کد بومی شما متوقف شده است، اشکال‌زدای‌های خودکار و دوگانه ممکن است بلافاصله نقاط توقف جدید جاوا را که تنظیم کرده‌اید تشخیص ندهند. برای جلوگیری از این مشکل، نقاط توقف جاوا را قبل از شروع جلسه اشکال‌زدایی یا در حالی که برنامه در یک نقطه توقف جاوا متوقف شده است، اضافه کنید. برای اطلاعات بیشتر، به شماره 229949 مراجعه کنید.

خارج شدن از دیباگر بومی

هنگام استفاده از دیباگر خودکار یا دوگانه برای اشکال‌زدایی جاوا و کد بومی، اگر از کد جاوای خود وارد یک تابع بومی شوید (برای مثال، دیباگر اجرا را در خطی از کد جاوا که یک تابع بومی را فراخوانی می‌کند متوقف کند و شما روی «قدم به داخل» کلیک کنید) ) و اگر می‌خواهید به کد جاوای خود برگردید، روی Resume Program کلیک کنید. (به جای خروج یا پا را فراتر بگذارید). روند برنامه شما همچنان متوقف خواهد شد، بنابراین روی Resume Program کلیک کنید. برای از سرگیری آن، در تب your-module -java کلیک کنید. برای اطلاعات بیشتر، به شماره ۲۲۴۳۸۵ مراجعه کنید.

دیباگر بومی هنگام بارگیری کتابخانه‌ها هنگ می‌کند

هنگام استفاده از اشکال‌زدای بومی برای اولین بار پس از ارتقا به اندروید استودیو ۴.۲ و بالاتر، ممکن است اشکال‌زدای بومی هنگام بارگیری کتابخانه‌ها از دستگاه اندروید، پاسخ‌دهی را متوقف کند. این مشکل، یک مشکل پیچیده است که حتی اگر اشکال‌زدا را متوقف و مجدداً راه‌اندازی کنید، همچنان ادامه دارد. برای رفع این مشکل، حافظه پنهان LLDB را در $USER/.lldb/module-cache/ حذف کنید.

اشکال‌زدای بومی با پیام «فرآیند اشکال‌زدا با کد خروج ۱۲۷ به پایان رسید» از کار می‌افتد.

این خطا در پلتفرم‌های مبتنی بر لینوکس هنگام شروع اشکال‌زدای بومی رخ می‌دهد. این خطا نشان می‌دهد که یکی از کتابخانه‌های مورد نیاز اشکال‌زدای بومی روی سیستم محلی نصب نشده است. نام کتابخانه‌ی مفقود شده ممکن است از قبل در فایل idea.log چاپ شده باشد. در غیر این صورت، می‌توانید از یک ترمینال برای رفتن به دایرکتوری نصب اندروید استودیو استفاده کنید و خط فرمان bin/lldb/bin/LLDBFrontend --version را اجرا کنید تا متوجه شوید کدام کتابخانه‌ها مفقود هستند. معمولاً کتابخانه‌ی مفقود شده ncurses5 است زیرا برخی از توزیع‌های اخیر لینوکس قبلاً به ncurses6 ارتقا یافته‌اند.

پروفیل‌سازها

این بخش مشکلات شناخته‌شده‌ی Profilerها را شرح می‌دهد.

پروفایلر حافظه بومی: پروفایل‌سازی در هنگام راه‌اندازی برنامه در دسترس نیست

نمایه‌ساز حافظه بومی در حال حاضر هنگام راه‌اندازی برنامه در دسترس نیست. این گزینه در نسخه بعدی در دسترس خواهد بود.

به عنوان یک راه حل موقت، می‌توانید از ابزار مستقل خط فرمان Perfetto برای ثبت پروفایل‌های راه‌اندازی استفاده کنید.

خطاهای تایم اوت در CPU Profiler

ممکن است هنگام انتخاب پیکربندی‌های Sample Java Methods یا Trace Java Methods در Android Studio CPU Profiler با خطای «ضبط ناموفق متوقف شد» مواجه شوید. این خطاها اغلب مربوط به timeout هستند، به خصوص اگر پیام خطای زیر را در فایل idea.log مشاهده کنید:

Wait for ART trace file timed out

خطاهای مربوط به زمان انقضا معمولاً روش‌های ردیابی‌شده را بیشتر از روش‌های نمونه‌برداری‌شده و ضبط‌های طولانی‌تر را بیشتر از ضبط‌های کوتاه‌تر تحت تأثیر قرار می‌دهند. به عنوان یک راه حل موقت، ممکن است امتحان کردن ضبط‌های کوتاه‌تر مفید باشد تا ببینید آیا خطا از بین می‌رود یا خیر.

اگر با مشکل تایم اوت (timeout) در Profiler مواجه شدید، لطفاً یک گزارش اشکال (bug) شامل سازنده/مدل دستگاه(های) خود و هرگونه ورودی مرتبط از idea.log و logcat ثبت کنید.

استثنای ADB هنگام اشکال‌زدایی یا پروفایلینگ

هنگام استفاده از Platform Tools نسخه ۲۹.۰.۳، ممکن است اشکال‌زدایی بومی و پروفایلرهای اندروید استودیو به درستی کار نکنند و هنگام انتخاب Help > Show Log ، ممکن است در فایل idea.log با خطای "AdbCommandRejectedException" یا "Failed to connect port" مواجه شوید. ارتقاء Platform Tools به نسخه ۲۹.۰.۴ یا بالاتر هر دو مشکل را برطرف می‌کند.

برای ارتقاء ابزارهای پلتفرم، موارد زیر را انجام دهید:

  1. با کلیک روی Tools > SDK Manager یا کلیک روی SDK Manager، SDK Manager را از اندروید استودیو باز کنید. در نوار ابزار.
  2. روی کادر انتخاب کنار «ابزارهای پلتفرم SDK اندروید» کلیک کنید تا علامت تیک نشان داده شود. نماد دانلود باید در ستون سمت چپ ظاهر شود.
  3. روی اعمال یا تأیید کلیک کنید.

افزونه مانع از کار کردن پنجره Build Output می‌شود

استفاده از افزونه‌ی هایلایت ساده‌ی CMake مانع از نمایش محتوا در پنجره‌ی Build Output می‌شود. Build اجرا می‌شود و تب Build Output ظاهر می‌شود، اما هیچ خروجی چاپ نمی‌شود ( شماره #204791544 ).

دستور نصب مانع از راه‌اندازی می‌شود

نصب نسخه جدیدتر اندروید استودیو قبل از نسخه قدیمی‌تر ممکن است مانع از اجرای نسخه قدیمی‌تر شود. برای مثال، اگر ابتدا نسخه Canary اندروید استودیو را نصب کنید و سپس سعی کنید نسخه پایدار را نصب و اجرا کنید، ممکن است نسخه پایدار اجرا نشود. در مواردی مانند این، باید حافظه پنهان را پاک کنید تا نسخه پایدار (قدیمی‌تر) اجرا شود. در macOS، برای پاک کردن حافظه پنهان، دایرکتوری Library/ApplicationSupport/Google/AndroidStudio version_number حذف کنید. در ویندوز، برای پاک کردن حافظه پنهان از Disk Cleanup استفاده کنید.

ضبط کننده تست اسپرسو با Compose کار نمی‌کند

ضبط‌کننده تست اسپرسو با پروژه‌هایی که شامل Compose هستند کار نمی‌کند. برای ایجاد تست‌های رابط کاربری برای پروژه‌هایی که شامل Compose هستند، به بخش «آزمایش طرح‌بندی Compose» مراجعه کنید.

میانبر Logcat با طرح‌بندی‌های صفحه‌کلید غیرانگلیسی تداخل دارد

اگر از طرح‌بندی صفحه‌کلید غیرانگلیسی استفاده می‌کنید، ممکن است میانبر پیش‌فرض صفحه‌کلید Logcat با طرح‌بندی تداخل داشته باشد و مانع از تایپ برخی کاراکترها هنگام ویرایش متن در اندروید استودیو شود. برای حل این مشکل، نقشه کلید Logcat متناقض را حذف یا دوباره نگاشت کنید. برای ویرایش نقشه‌های کلید Logcat در اندروید استودیو، به اندروید استودیو > تنظیمات > نقشه کلید بروید و Logcat را در لیست نقشه‌های کلید جستجو کنید. برای اطلاعات بیشتر، به شماره #263475910 مراجعه کنید.

این مشکل با حذف میانبر Logcat در اندروید استودیو Electric Eel Patch 1 حل خواهد شد.

مشکلات شناخته شده با افزونه Gradle اندروید

این بخش مشکلات شناخته‌شده‌ای را که در آخرین نسخه پایدار افزونه Android Gradle وجود دارد، شرح می‌دهد.

همه وابستگی‌های کتابخانه‌ای با ویژگی‌های پویا، بررسی خط کد (lint) نمی‌شوند.

هنگام اجرای lint با checkDependencies = true از یک ماژول برنامه، وابستگی‌های کتابخانه با ویژگی پویا بررسی نمی‌شوند، مگر اینکه وابستگی‌های برنامه نیز باشند ( شماره #191977888 ). به عنوان یک راه حل، می‌توان وظیفه lint را روی آن کتابخانه‌ها اجرا کرد.

امضای فایل با نام کاراکترهای بازگشت به ابتدای سطر

امضای JAR (طرح نسخه ۱) از نام فایل‌های حاوی کاراکترهای بازگشت به ابتدای سطر ( شماره ‎#۶۳۸۸۵۸۰۹ ) پشتیبانی نمی‌کند.

تغییر خروجی‌های متغیر در زمان ساخت ممکن است کار نکند.

استفاده از API نوع Variant برای دستکاری خروجی‌های نوع Variant با افزونه جدید از بین رفته است. این افزونه همچنان برای کارهای ساده‌ای مانند تغییر نام 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() برای دریافت فایل مانیفست برای هر نوع، می‌توانید 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 برای انواع ساخت خاص حذف شوند. شما همچنان می‌توانید از سایر مجموعه‌های منبع AIDL، از جمله main/ ، انواع ساخت، طعم‌های محصول و ترکیبی از طعم‌های محصول استفاده کنید. اگر نیاز به استفاده از مجموعه‌های منبع AIDL مخصوص هر نوع دارید، به استفاده از Kotlin 1.6.21 ادامه دهید.

مشکلات شناخته شده برطرف شد

این بخش مشکلات شناخته‌شده‌ای را که در نسخه‌های اخیر برطرف شده‌اند، شرح می‌دهد. اگر با هر یک از این مشکلات مواجه هستید، باید اندروید استودیو را به آخرین نسخه پایدار یا پیش‌نمایش به‌روزرسانی کنید.

در اندروید استودیو ۲۰۲۱.۱.۱ رفع شد

  • خروجی lint موجود نیست : وقتی وظیفه lint UP-TO-DATE است ( شماره #191897708 )، هیچ خروجی متن lint در stdout چاپ نمی‌شود. این مشکل در AGP 7.1.0-alpha05 برطرف شده است.
  • مشکلات مربوط به تست واحد یک پروژه برنامه که از افزونه Hilt استفاده می‌کند : مسیر کلاس تست واحد شامل کلاس‌های برنامه غیر ابزاربندی شده است، به این معنی که Hilt کلاس‌های برنامه را برای مدیریت تزریق وابستگی هنگام اجرای تست‌های واحد، ابزاربندی نمی‌کند ( شماره #213534628 ). در AGP 7.1.1 برطرف شد.

در اندروید استودیو ۲۰۲۰.۳.۱ رفع شد

  • استثنائات Lint در پروژه‌های کاتلین: پروژه‌های کاتلینی که checkDependencies = true قرار می‌دهند، ممکن است با استثنائات یا خطاهای اشاره‌گر تهی مواجه شوند ( شماره #158777858 ).

در اندروید استودیو ۴.۲ رفع شد

  • IDE در macOS Big Sur هنگ می‌کند: اندروید استودیو ۴.۱ ممکن است هنگام باز کردن یک پنجره محاوره‌ای هنگ کند.

در اندروید استودیو ۴.۱ رفع شد

  • برای اعمال تنظیمات حافظه از نسخه قبلی IDE، آن را مجدداً راه‌اندازی کنید: پس از به‌روزرسانی اندروید استودیو، برای اعمال هرگونه تنظیمات حافظه منتقل‌شده از نسخه قبلی IDE، باید اندروید استودیو را مجدداً راه‌اندازی کنید.
  • کلاس Manifest با رشته‌های مجوز سفارشی دیگر به طور پیش‌فرض تولید نمی‌شود: اگر می‌خواهید کلاس را تولید کنید، android.generateManifestClass = true قرار دهید.

در اندروید استودیو ۳.۶ رفع شد

  • خطای نصب APK در LineageOS : نصب برنامه روی دستگاه‌هایی که نسخه‌های خاصی از LineageOS یا CyanogenMod را اجرا می‌کنند، ممکن است با شکست مواجه شود و خطای INSTALL_PARSE_FAILED_NOT_APK را ایجاد کند.

    در اندروید استودیو ۳.۶ بتا ۱ و بالاتر، IDE با انجام نصب کامل برنامه هنگام استقرار برنامه در دستگاه‌های LineageOS یا CyanogenMod، این استثنا را مدیریت می‌کند، که ممکن است منجر به زمان استقرار طولانی‌تر شود.

در اندروید استودیو ۳.۵.۲ رفع شد

  • سبک کد XML خراب : هنگام ویرایش کد XML، وقتی از نوار منو ، Code > Reformat Code را انتخاب کردید، IDE سبک کد نادرستی را اعمال کرد.

در اندروید استودیو ۳.۳.۱ رفع شد

  • خطاهای کمبود حافظه هنگام اسکن پروژه‌های مبتنی بر ++C : وقتی Gradle پروژه‌ای را اسکن می‌کند که کد ++C در بیش از یک مکان در یک درایو دارد، اسکن شامل تمام دایرکتوری‌های زیر اولین دایرکتوری مشترک می‌شود. اسکن تعداد زیادی دایرکتوری و فایل ممکن است منجر به خطاهای کمبود حافظه شود.

    برای اطلاعات بیشتر در مورد این مشکل، باگ مرتبط با مشکل را مطالعه کنید.