افزایه Android Gradle نسخه ۸.۳.۰ (فوریه ۲۰۲۴)

افزایه Android Gradle نسخه ۸.۳.۰ یک نسخه اصلی است که شامل انواع ویژگی‌های جدید و بهبودها است.

سازگاری

حداکثر سطح میانای برنامه‌سازی کاربردی که افزایه Android Gradle نسخه ۸.۳ پشتیبانی می‌کند سطح میانای برنامه‌سازی کاربردی ۳۴ است. در اینجا اطلاعات سازگاری دیگری ارائه شده است:

حداقل نسخه نسخه پیش‌فرض یادداشت‌ها
Gradle ۸٫۴ ۸٫۴ برای کسب اطلاعات بیشتر، به‌روزرسانی Gradle را ببینید.
ابزارهای ساخت کیت توسعه نرم‌افزار ‫۳۴.۰.۰ ‫۳۴.۰.۰ «ابزارهای ساخت کیت توسعه نرم‌افزار» را نصب یا پیکربندی کنید.
NDK موجود نیست 25.1.8937393 نسخه دیگری از NDK را نصب یا پیکربندی کنید.
JDK 17 17 برای کسب اطلاعات بیشتر، تنظیم نسخه JDK را ببینید.

ویژگی‌های جدید در افزایه Android Gradle 8.3 در زیر آمده است.

نسخه‌های پخش وصله

در زیر فهرستی از نسخه‌های وصله در Android Studio Iguana و افزایه Android Gradle نسخه ۸.۳ ارائه شده است.

Android Studio Iguana | 2023.2.1 Patch 2 و AGP 8.3.2 (آوریل ۲۰۲۴)

این به‌روزرسانی جزئی شامل این رفع اشکال‌ها می‌شود.

Android Studio Iguana | 2023.2.1 Patch 1 و AGP 8.3.1 (مارس ۲۰۲۴)

این به‌روزرسانی جزئی شامل این رفع اشکال‌ها می‌شود.

پشتیبانی از کاتالوگ‌های نسخه Gradle

‫Android Studio از کاتالوگ‌های نسخه Gradle مبتنی بر TOML پشتیبانی می‌کند، ویژگی‌ای که به شما امکان می‌دهد وابستگی‌ها را در یک مکان مرکزی مدیریت کنید و وابستگی‌ها را در ماژول‌ها یا پروژه‌ها هم‌رسانی کنید. اکنون Android Studio پیکربندی کاتالوگ‌های نسخه را ازطریق پیشنهادهای ویرایشگر و یکپارچه‌سازی با کادر گفتگوی ساختار پروژه آسان‌تر می‌کند. با نحوه راه‌اندازی و پیکربندی «کاتالوگ‌های نسخه Gradle» یا نحوه انتقال ساخت به کاتالوگ‌های نسخه آشنا شوید.

تکمیل کد و پیمایش

وقتی کاتالوگ نسخه‌ای را در قالب فایل TOML ویرایش می‌کنید یا وابستگی‌ای را از کاتالوگ نسخه به فایل ساخت اضافه می‌کنید، Android Studio تکمیل کد را ارائه می‌دهد. برای استفاده از تکمیل کد، Ctrl+Space (Command+Space در macOS) را فشار دهید. علاوه‌براین، می‌توانید با فشار دادن Ctrl+b (Command+b در macOS)، به‌سرعت از مرجع وابستگی در فایل build.gradle برنامه به جایی که در کاتالوگ نسخه اعلام شده است پیمایش کنید.

تکمیل کد هنگام افزودن وابستگی

ادغام با کادر گفتگوی «ساختار پروژه»

اگر پروژه‌تان از کاتالوگ نسخه‌ای استفاده می‌کند که در قالب فایل TOML تعریف شده است، می‌توانید متغیرهایی را که در آنجا تعریف کرده‌اید ازطریق کادر گفتگوی ساختار پروژه نمای متغیرها (فایل > ساختار پروژه > متغیرها) در «استودیو Android» ویرایش کنید. برای هر کاتالوگ نسخه، منو کرکره‌ای وجود دارد که متغیرهای آن کاتالوگ را فهرست می‌کند. برای ویرایش متغیر، روی مقدار آن کلیک کنید و آن را بازنویسی کنید. وقتی این تغییرات را ذخیره می‌کنید، فایل TOML براساس آن به‌روز می‌شود.

متغیرهای کاتالوگ نسخه در کادر گفتگوی «ساختار پروژه»

همچنین می‌توانید وابستگی‌ها را در چارگوش ساختار پروژه نمای وابستگی‌ها (فایل > ساختار پروژه > وابستگی‌ها) به‌روز کنید. برای به‌روزرسانی نسخه‌ها بااستفاده از کادر گفتگوی ساختار پروژه، به واحد و وابستگی موردنظر برای ویرایش پیمایش کنید، و سپس فیلد نسخه درخواستی را به‌روزرسانی کنید. وقتی این تغییرات را ذخیره می‌کنید، فایل TOML براساس آن به‌روز می‌شود. توجه داشته باشید که اگر نسخه وابستگی بااستفاده از متغیر تعریف شده باشد، به‌روزرسانی مستقیم نسخه به این روش متغیر را با مقدار کدبندی‌شده جایگزین می‌کند. همچنین توجه داشته باشید که برداشتن وابستگی از فایل ساخت، چه از کادر گفتگوی ساختار پروژه استفاده کنید چه نکنید، وابستگی را از کاتالوگ نسخه برنمی‌دارد.

وابستگی‌ها از کاتالوگ نسخه در کادر گفتگوی «ساختار پروژه»

مشکلات و محدودیت‌های شناخته‌شده

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

  • خطا در برجسته کردن اعلان‌های نام مستعار افزایه در فایل‌های دستورگان Kotlin: وقتی اعلان افزایه‌ای به‌شکل alias(libs.plugins.example) اضافه می‌کنید، ویرایشگر زیر بخش libs خط قرمز اضافه می‌کند. این مشکل شناخته‌شده‌ای در Gradle نسخه‌های ۸.۰ و پایین‌تر است و در نسخهٔ پخش آتی Gradle برطرف خواهد شد.

  • پشتیبانی «استودیو Android» فقط برای کاتالوگ‌های نسخه در قالب TOML: پشتیبانی تکمیل کد، پیمایش، و گفتگوی «ساختار پروژه» در «استودیو Android» فقط برای کاتالوگ‌های نسخه‌ای که در قالب فایل TOML تعریف شده‌اند دردسترس است. بااین‌حال، همچنان می‌توانید کاتالوگ نسخه را مستقیماً در فایل settings.gradle اضافه کنید و از وابستگی‌های آن در پروژه‌تان استفاده کنید.

  • پیمایش برای فایل‌های ساخت KTS پشتیبانی نمی‌شود: پیمایش به تعریف وابستگی در کاتالوگ نسخه بااستفاده از Control+کلیک (Command+کلیک در macOS) هنوز برای فایل‌های ساخت نوشته‌شده بااستفاده از دستورگان Kotlin پشتیبانی نمی‌شود.

  • «دستیار Firebase» وابستگی‌ها را مستقیماً در دستورگان‌های ساخت اضافه می‌کند: دستیار Firebase وابستگی‌ها را مستقیماً به دستورگان‌های ساخت اضافه می‌کند به‌جای اینکه ازطریق کاتالوگ‌های نسخه این کار را انجام دهد.

  • عملکرد «یافتن موارد استفاده» پشتیبانی نمی‌شود: یافتن موارد استفاده متغیر کاتالوگ نسخه در فایل‌های ساخت دیگر هنوز پشتیبانی نمی‌شود، چه فایل ساخت در KTS باشد چه در Groovy. یعنی استفاده از مهار+کلیک (فرمان+کلیک در macOS) روی تعریف متغیر در کاتالوگ نسخه به فایل‌های ساختی که متغیر در آن استفاده شده است منجر نمی‌شود.

  • اگر فایل‌های کاتالوگ در پوشه ریشه gradle باشند، کادر گفتگوی «ساختار پروژه» در «استودیو Android» چندین فایل کاتالوگ را نشان می‌دهد، اما کاتالوگ‌های ساخت ترکیبی را نشان نمی‌دهد. برای مثال، اگر دو فایل کاتالوگ داشته باشید—یکی برای برنامه و یکی برای ساخت ترکیبی—گفتگوی «ساختار پروژه» فقط فایل کاتالوگ برنامه را نشان می‌دهد. می‌توانید از ساخت ترکیبی استفاده کنید، اما باید فایل TOML آن را مستقیماً ویرایش کنید.

اطلاعات آماری تکمیلی کیت توسعه نرم‌افزار: مشکلات خط‌مشی

«استودیو Android» هشدارهای lint را در build.gradle.kts و build.gradle فایل‌ها و در کادر گفتگوی ساختار پروژه برای کیت‌های توسعه نرم‌افزار عمومی که در نمایه کیت توسعه نرم‌افزار Google Play نقض خط‌مشی Play دارند نمایش می‌دهد. باید هرگونه وابستگی که خط‌مشی‌های Play را نقض می‌کند به‌روز کنید زیرا این نقض‌ها می‌تواند مانع از انتشار در «کنسول Google Play» در آینده شود. هشدارهای نقض خط‌مشی مکمل هشدارهای نسخه قدیمی نمایش‌داده‌شده توسط Android Studio است.

پشتیبانی از نسخه compileSdk در «استودیو Android»

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

تغییرات رفتار Lint

از افزایه Android Gradle نسخه 8.3.0-alpha02، وقتی lint روی واحدی اجرا می‌شود، تکالیف تجزیه‌وتحلیل lint جداگانه‌ای برای عناصر اصلی و آزمایشی واحد اجرا می‌شود. دلیل این تغییر بهبود عملکرد است. برای برگشتن به رفتار قبلی، android.experimental.lint.analysisPerComponent=false را در فایل gradle.properties تنظیم کنید.

کاهش دقیق منابع به‌طور پیش‌فرض روشن است

کوچک‌سازی دقیق منبع، که ورودی‌های استفاده‌نشده را از فایل resources.arsc برمی‌دارد و فایل‌های منبع استفاده‌نشده را حذف می‌کند، به‌طور پیش‌فرض روشن است. وقتی این کوچک‌سازی فعال باشد، جدول منبع شما کاهش می‌یابد و فقط ورودی‌های پوشه res ارجاع‌داده‌شده در APK گنجانده می‌شود.

برای خاموش کردن کوچک‌سازی دقیق منبع، android.enableNewResourceShrinker.preciseShrinking را در فایل gradle.properties پروژه روی false تنظیم کنید.

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

افزایه Android Gradle نسخه ۸.۳.۲

مشکلات برطرف‌شده
افزایه Android Gradle
با AGP 8.3 و فعال بودن desugaring، ممکن است بن‌بست رخ دهد
‫AGP 8.3 تکلیف zipApksFor را خراب می‌کند
ادغام Lint
‫Lint نتوانست وابستگی KMP را رفع ابهام کند

افزایه Android Gradle نسخه ۸.۳.۱

مشکلات برطرف‌شده
افزایه Android Gradle
مشکل مدیریت ورودی‌های افزایشی MergeJavaResourcesTask
ادغام Lint
‫Lint نمی‌تواند انواع مجموعه‌های منبع هم‌نیا را در AGP 8.3.0-rc02 حل کند

افزایه Android Gradle نسخه ۸.۳.۰

مشکلات برطرف‌شده
افزایه Android Gradle
ساختن حافظه نهان برای تکلیف PackageForUnitTest اضافی است
[AGP 8.1.0] اگر هم splits.abi.isEnable و هم testOptions.unitTests.isIncludeAndroidResources درست باشند، ./gradlew test با پیام «Unable to find manifest output» (خروجی مانیفست پیدا نشد) ناموفق می‌شود
ساخت مدل AGP با ساخت‌های ترکیبی gradle تودرتو ناموفق است
کاهش‌دهنده منابع شناسه‌های منبع را خراب می‌کند و باعث ازکارافتادن زمان اجرا می‌شود
بررسی حداقل نسخه Gradle در ساخت دوم و بعداز آن اجرا نمی‌شود
پس‌از به‌روزرسانی AGP از نسخه 8.0.2 به 8.1.0، اجرای تکلیف «:app:mergeReleaseClasses» ناموفق بود
[Gradle 8.4][ارتقا] خطای آزمون یکپارچه‌سازی پس‌از ارتقا به‌دلیل استفاده از ویژگی منسوخ‌شده در افزایه kotlin gradle
در مرحله پیکربندی، وجود فایل‌های رونهاد مانیفست بررسی نشود
پیوند خراب به سند Gradle در خطای MergeJavaResWorkAction
‫Gradle 8.1 به‌دلیل .gradle/.android/analytics.settings حافظه نهان پیکربندی را خراب می‌کند
‫AGP نباید از ProjectComponentIdentifier.projectPath بدون ProjectComponentIdentifier.build استفاده کند
لطفاً گزارش‌گیری سطح اطلاعات را برای AGP «Analytics other plugin to proto: ...» کاهش دهید/بردارید.
[Gradle 8.4][ارتقا] عملیات فایل درحین پیکربندی در ProcessJavaResTask باعث ازکارافتادن حافظه نهان پیکربندی می‌شود
‫Variant API برای دریافت جدول نماد (R.txt)
افزایه مستقل lint وابستگی gradleApi() را به‌درستی مدیریت نمی‌کند
‫kDocs ضعیف در کلاس‌ها/دارایی‌های AGP. `VariantOutput.enable` پیشنهاد می‌کند که با `VariantOutput.enable` جایگزین شود
‫AGP 8.3.0-alpha02 نمی‌تواند نمایه‌های انتشار را در میزبان‌های Windows نصب کند
اجرای `android.enableDexingArtifactTransform=true`
[Gradle 8.4][ارتقا] خطای آزمون یکپارچه‌سازی پس‌از ارتقا به‌دلیل مدیریت فایل در مرحله پیکربندی
‫AGP 8.3.0-alpha-02 - `Error: Failed to deserialize cached resource repository.`
[Gradle 8.4][ارتقا] پس‌از ارتقا به‌دلیل مدیریت فایل در مرحله پیکربندی TestLabBuildService، آزمایش یکپارچه‌سازی ناموفق بود
‫AGP 8.1.0 برنامه را پس‌از اجرای آزمایش‌های ابزاری حذف نصب می‌کند - نسخه 7.4.2 این کار را نمی‌کند
تبدیل کردن فایل APK منجر به خطا در ListingFileRedirectTask می‌شود
تبدیل کردن داده‌های جلسه ASSETS مکان‌های ورودی/خروجی خراب می‌دهد
ارتقا دادن android.experimental.r8.dex-startup-optimization=true به پیش‌فرض
به «میانای برنامه‌سازی کاربردی تراز پیکربندی Gradle» جدید انتقال دهید
وقتی مترجم Kotlin سعی می‌کند به IDEA 21.3 به‌روزرسانی کند، منبع ترجمه نمی‌شود
‫Reactive get() with artifacts API
ارتقای دارایی «android.lint.printStackTrace» در AGP به پایدار
‫AGP 8.1.0: ویژگی پویا: وابستگی ضمنی بین exportReleaseConsumerProguardFiles و extractProguardFiles باعث خطاهای کامپایل می‌شود
به‌نظر می‌رسد `variant.unitTest.jniLibs.addGeneratedSourceDirectory` کاری انجام نمی‌دهد
به‌روزرسانی تجزیه‌گر XML مورداستفاده در AGP برای سازگاری با Gradle 8.4
بسته انتشار AGP 8.0.1 ابزار jacoco تأثیری ندارد
پس‌رفت «جوجه‌تیغی»: دکمه «اجرا» چند ثانیه تأخیر دارد (ایجاد مشخصات)
‫AGP نسخه 8.3.0-alpha11 فایل APK نسخه پخشی تولید می‌کند که در زمان راه‌اندازی با android.content.res.Resources$NotFoundException ازکار می‌افتد
ارتقای دارایی «android.lint.printStackTrace» در AGP به پایدار
درخواست ویژگی: ارتقا دادن com.android.build.api.extension.impl.CURRENT_AGP_VERSION به یک API عمومی
«مدیر کیت توسعه نرم‌افزار» باید ارسال اطلاعات گزارش به stdout را متوقف کند
‫DexArchiveBuilderTaskDelegate با واحد کتابخانه فقط منبع ناموفق بود
متغیر افزایه سفارشی AGP7.4 برای تبدیل برای همه استثناهای ورودی تکراری پرتاب: META-INF/MANIFEST.MF
پشتیبانی از برچسب‌های جدید «مانیفست»،
پیوند «پروژه‌های جداشده» در تنظیمات استودیو به مکان اشتباهی می‌رود.
لطفاً گزینه‌هایی برای افزودن منابع تولیدشده به Javadoc و SourceJar ارائه دهید
برای رفع سریع مغایرت بین compileSdk و وابستگی با minCompileSdkVersion نیاز است
ابزارهای [Gradle]:overrideLibrary باید از ستاره (*) پشتیبانی کند
هنگام ویرایش مانیفست، واسط کاربر منجمد می‌شود
نسخه JaCoCo در AGP 8.2.0 تنظیم نشد
وظیفه نصب «افزایه Android Gradle» نسخه ۸.۲.۰ در پروژه‌ای که از ویژگی‌های پویا استفاده می‌کند ناموفق است
وظیفه نصب «افزایه Android Gradle» نسخه ۸.۲.۰ در پروژه‌ای که از ویژگی‌های پویا استفاده می‌کند ناموفق است
Dexer (D8)
[کتابخانه دی‌شوگرشده] نسخه ۲.۱ کتابخانه دی‌شوگرشده با نسخه‌های قبلی R8 سازگار نیست
بهینه‌سازی‌ها حتی با D8 هم اجرا می‌شوند؟
Lint
[Lint] ‫ TranslucentViewDetector در تابع filterIncident ازکار می‌افتد و باعث می‌شود lint نتیجه اشتباهی تولید کند
‫TranslucentViewDetector باید مقدار «پشت» را بپذیرد
‫Android Lint در کتابخانه KMP با پیام `property 'variantInputs.name' doesn't have a configured value.` (دارایی «variantInputs.name» مقدار پیکربندی‌شده ندارد) ناموفق است.
گزارش TranslucentViewDetector خط اشتباه در مانیفست
‫lintDebug هنگام استفاده از وابستگی‌های پروژه، هشدارهای «از Toml به‌جای آن استفاده کنید» را به‌اشتباه گزارش می‌کند
مشکلات غیرمنتظره از پروژه دیگری که Android Lint پرچم‌گذاری کرده است
بررسی LINT تشخیص مثبت کاذب «منبع استفاده‌نشده» در داخل پیوند و شنونده کلیک
فایل jar بررسی lint سفارشی بار نشد: Node نمی‌تواند به TreeNode تبدیل شود
‫Lint visitAnnotationUsage برای موارد استفاده از کلاس‌های حاشیه‌نویسی‌شده در بیانیه‌های متغیر فراخوانده نمی‌شود
‫Lint 31.0.2 با java.util.NoSuchElementException ناموفق بود: «آرایه خالی است».
هیچ هشدار Lint درباره kotlin.text.MatchNamedGroupCollection#get(String) که به API 26 نیاز دارد وجود ندارد
lint:TypographyQuotes منفی‌های کاذب: بیش‌از یک آپوستروف گریز نادیده گرفته می‌شود
‫AGP 8.0.2 lint InvalidId detector false positive
مشکلات LintError به خطوط پایه lint اضافه شد
«اصلاح سریع Lint» کار نمی‌کند و منجر به خطای IDE می‌شود
آزمایش به‌دلیل تحلیل جزئی به‌طور ناسازگار ناموفق بود
بخش برجسته نامعتبر هشداری که مثبت کاذب است
‫Lint visitAnnotationUsage برای موارد استفاده از کلاس‌های حاشیه‌نویسی‌شده در بیانیه‌های متغیر فراخوانده نمی‌شود
«پردازنده منابع استفاده‌نشده» ممکن است فایل ساخت Gradle را حذف کند
بررسی لینت NewApi فیلد نهایی «isAtleastU() && otherCondition()» را درک نمی‌کند
‫StackOverflow از `LintClient.getSdkHome`
‫Android Studio / Lint به شما نمی‌گوید که وابستگی‌های «پلاتفرم» قدیمی شده‌اند
اشکال: پیشنهادی برای به‌روزرسانی وابستگی Firebase-bom وجود ندارد
«ساختار پروژه» (و Gradle (?)) وابستگی‌های Firebase BOM را برای ارتقا به نسخه جدیدتر شناسایی نمی‌کند.
ادغام Lint
خطای lint DuplicatePlatformClasses از وابستگی testImplementation
Shrinker (R8)
‫R8 پس‌از ارتقا از AGP 8.0.2 به 8.1.0 کار نمی‌کند
‫isShrinkResources در نسخه 8.3.0-alpha11 تا alpha14 بیش‌ازحد بهینه‌سازی می‌کند
خرابی کیت توسعه نرم‌افزار R8 Flurry با AGP 8.2.0
‫Android - R8 باعث خرابی زیرکلاس LinearLayoutManager می‌شود
خرابی زمان اجرا R8 نسخه ۸.۲.۳۳، «java.lang.VerifyError: Bad type on operand stack» پس‌از ارتقا
‫[R8 8.3.21] ‏ R8 8.3.21‏ ۱٫۵۷ مگابایت بزرگ‌تر از R8 8.1.56 است
‫[R8 8.3.21] ‏ R8 8.3.21‏ ۱٫۵۷ مگابایت بزرگ‌تر از R8 8.1.56 است
‫class.getInterfaces()‎ خالی برمی‌گرداند
‫Test SimpleKotlinEnumUnboxingTest در روبات kotlin_dev ناموفق است