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

این صفحه مشکلات شناخته شده Android Studio Ladybug و Android Gradle پلاگین 8.7.0 را ردیابی می کند. اگر مشکلی را تجربه کردید که قبلاً در اینجا ذکر نشده است، لطفاً یک اشکال را گزارش کنید .

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

مشکلات شناخته شده با Android Studio

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

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

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

پنجره دستیار Firebase یک پیام خطا نمایش می دهد

اگر پنجره Firebase Assistant (Tools > Firebase از منوی اصلی) یک پیام خطا نشان داد، حافظه پنهان را باطل کنید و Android Studio را مجددا راه اندازی کنید تا خطا برطرف شود.

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

امکان جداسازی یک نما با استفاده از بازرس طرح بندی تعبیه شده به طور موقت در دسترس نیست. ما در حال کار بر روی رفع این مشکل در نسخه بعدی هستیم.

گره های نوشتن همه با استفاده از Layout Inspector قابل بازرسی نیستند

اگر متوجه شدید که هنگام استفاده از Layout Inspector همه گره های Compose قابل بازرسی نیستند، احتمالاً به دلیل اشکالی است که در Compose نسخه 1.5.0-alpha04 رفع شده است. اگر با این مشکل مواجه هستید، مطمئن شوید که به Compose نسخه 1.5.0-alpha04 یا بالاتر ارتقا دهید.

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

با شروع با 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 در ماژول شما.

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

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

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

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

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

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

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

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

ویندوز

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

macOS

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

لینوکس

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

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

برنامه هایی که از Database Inspector استفاده می کنند در شبیه ساز Android 11 خراب می شوند

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

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

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

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

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

برای اندروید استودیو 4.1 و بالاتر:

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

برای Android Studio 4.0 و نسخه های قبلی:

  • ویندوز: %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 و بتا Android Studio به جای XY برای <version> PreviewX.Y است. به عنوان مثال، نسخه‌های Android Studio 4.1 Canary از AndroidStudioPreview4.1 به جای فهرست راهنمای AndroidStudio4.1 که برای نسخه‌های Release Candidates و Stable استفاده می‌شود، استفاده می‌کنند.

موضوع تدوین در پروژه های چند پلتفرمی Kotlin

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

درگیری های نقشه برداری کلید در لینوکس

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

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

متن UI کوچک در ChromeOS

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

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

ویرایش کد

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

ورودی صفحه کلید منجمد - مشکلات "iBus" در لینوکس

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

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

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

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

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

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

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

خطاهای «همتا تأیید نشده» از Gradle sync یا 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

در حال استقرار

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

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

شماره 18149 Gradle بر پلاگین Android Gradle نسخه 7.0 و بالاتر تأثیر می گذارد زیرا به Gradle نسخه 7.0 و بالاتر نیاز دارند. با شروع در Gradle 7.0، تماشای فایل به طور پیش فرض فعال است. اگر روی سیستم عامل مک کار می کنید و پروژه شما در /System/Volumes/Data ذخیره شده است، تماشای فایل Gradle به درستی تغییرات فایل را ردیابی نمی کند. این باعث می شود که Build System هیچ تغییری در فایل مشاهده نکند و بنابراین APK(های) را به روز نمی کند. سپس کد استقرار افزایشی کاری انجام نمی دهد زیرا وضعیت APK محلی مانند دستگاه است.

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

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

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

  1. ابتدا سعی کنید آخرین نسخه HAXM را از SDK Manager نصب کنید.
  2. در MacOS، به System Preferences > Security and Privacy بروید.
  3. اگر هشداری می‌بینید که نرم‌افزار سیستم از برنامه‌نویس «Intel Corporation Apps» از بارگیری مسدود شده است ، روی اجازه کلیک کنید:

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

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

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

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

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

مشکل در Android Runtime خطا می اندازد

اگر از دستگاهی استفاده می‌کنید که اندروید 8.0 یا 8.1 را اجرا می‌کند، ممکن است هنگام تلاش برای اعمال انواع خاصی از تغییرات با پیام‌های «VERIFICATION_ERROR» مواجه شوید (مخصوصاً اگر از Kotlin استفاده می‌کنید). این پیام به دلیل مشکل در زمان اجرا اندروید است که در اندروید 9.0 و بالاتر برطرف شده است. اگرچه این مشکل باعث می شود Apply Changes با شکست مواجه شود، اما همچنان می توانید اجرا کنید نماد اجرا دوباره برنامه خود را مشاهده کنید تا تغییرات خود را ببینید. با این حال، توصیه می کنیم دستگاه را به اندروید 9.0 یا بالاتر ارتقا دهید.

اشکال زدایی و تست

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

JUnit منابع از دست رفته را در classpath هنگام اجرا از Android Studio آزمایش می کند

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

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

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

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

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

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

برخی از تنظیمات اجرای آزمایشی کار نمی کنند

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

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

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

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

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

در حین استفاده از دیباگر خودکار یا دوگانه برای اشکال زدایی جاوا و کد بومی، اگر از کد جاوا خود وارد یک تابع بومی شوید (به عنوان مثال، دیباگر اجرا را در خطی در کد جاوا که تابع بومی را فراخوانی می کند متوقف می کند و روی Step Into کلیک می کنید. ) و می خواهید به کد جاوا خود بازگردید، روی Resume Program کلیک کنید (به جای قدم بیرون یا Step Over). روند برنامه شما همچنان متوقف خواهد شد، بنابراین روی Resume Program کلیک کنید در تب your-module -java برای از سرگیری آن. برای اطلاعات بیشتر به شماره 224385 مراجعه کنید.

هنگام بارگیری کتابخانه ها، دیباگر بومی معلق می ماند

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

اشکال‌زدای بومی با «فرایند اشکال‌زدا با کد خروج 127 به پایان رسید» خراب می‌شود.

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

پروفایلرها

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

نمایه کننده حافظه بومی: نمایه سازی در حین راه اندازی برنامه در دسترس نیست

نمایه Native Memory در حال حاضر هنگام راه‌اندازی برنامه در دسترس نیست. این گزینه در نسخه آینده در دسترس خواهد بود.

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

خطاهای مهلت زمانی در CPU Profiler

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

Wait for ART trace file timed out

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

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

استثنا ADB هنگام اشکال زدایی یا نمایه سازی

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

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

  1. با کلیک روی Tools > SDK Manager یا روی SDK Manager، مدیر SDK را از Android Studio باز کنید در نوار ابزار
  2. روی کادر تأیید کنار Android SDK Platform-Tools کلیک کنید تا علامت بررسی نشان داده شود. یک نماد دانلود باید در ستون سمت چپ ظاهر شود.
  3. روی Apply یا OK کلیک کنید.

پلاگین از کار کردن پنجره Build Output جلوگیری می کند

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

دستور نصب از راه اندازی جلوگیری می کند

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

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

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

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

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

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

مشکلات شناخته شده با پلاگین Android Gradle

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

همه وابستگی‌های کتابخانه با ویژگی پویا بررسی نمی‌شوند

هنگام اجرای 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() برای دریافت فایل مانیفست برای هر نوع، می توانید 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 ادامه دهید.

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

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

در Android Studio 2021.1.1 رفع شد

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

در Android Studio 2020.3.1 رفع شد

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

در اندروید استودیو 4.2 رفع شد

  • IDE در macOS Big Sur ثابت می‌شود: Android Studio 4.1 ممکن است با باز کردن یک گفتگو ثابت شود.

در اندروید استودیو 4.1 رفع شد

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

در اندروید استودیو 3.6 رفع شد

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

    در Android Studio 3.6 Beta 1 و بالاتر، IDE این استثنا را با اجرای یک نصب کامل برنامه هنگام استقرار برنامه خود در دستگاه‌های LineageOS یا CyanogenMod انجام می‌دهد، که ممکن است منجر به زمان‌های استقرار طولانی‌تر شود.

در اندروید استودیو 3.5.2 رفع شد

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

در اندروید استودیو 3.3.1 رفع شد

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

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