افزونه Android Gradle 8.4.0 (آوریل 2024)

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

سازگاری

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

حداقل نسخه نسخه پیش‌فرض یادداشت‌ها
گرادل ۸.۶ ۸.۶ برای کسب اطلاعات بیشتر، به به‌روزرسانی Gradle مراجعه کنید.
ابزارهای ساخت SDK ۳۴.۰.۰ ۳۴.۰.۰ ابزارهای ساخت SDK را نصب یا پیکربندی کنید .
ان دی کی ناموجود ۲۶.۱.۱۰۹۰۹۱۲۵ نسخه دیگری از NDK را نصب یا پیکربندی کنید .
جی‌دی‌کی ۱۷ ۱۷ برای کسب اطلاعات بیشتر، به تنظیم نسخه JDK مراجعه کنید.

موارد زیر ویژگی‌های جدید افزونه اندروید Gradle نسخه ۸.۴ هستند.

انتشار پچ

در زیر لیستی از پچ‌های منتشر شده در اندروید استودیو Jellyfish و افزونه اندروید Gradle نسخه ۸.۴ آمده است.

اندروید استودیو جلی‌فیش | 2023.3.1 پچ 2 و AGP 8.4.2 (ژوئن 2024)

به‌روزرسانی امنیتی مهم: یک آسیب‌پذیری امنیتی در افزونه‌ی گیت‌هاب موجود در اندروید استودیو ایگوانا | 2023.2.1 و بالاتر می‌تواند توکن‌های دسترسی را در اختیار اشخاص غیرمجاز قرار دهد.

راه حل: Jetbrains این مشکل را در محصولات پلتفرم IntelliJ حل کرده است و این راه حل اکنون در Android Studio Jellyfish | 2023.3.1 Patch 2 (2023.3.1.20) موجود است.

اگر از قبل نسخه پایدار اندروید استودیو را دارید، می‌توانید با کلیک روی Help > Check for Updates (یا Android Studio > Check for Updates در macOS) به‌روزرسانی را دریافت کنید. در غیر این صورت، آخرین نسخه پایدار را دانلود کنید .

علاوه بر این، اگر به طور فعال از قابلیت درخواست GitHub در IDE استفاده کرده‌اید، اکیداً توصیه می‌کنیم هرگونه توکن GitHub که توسط افزونه استفاده می‌شود را لغو کنید. با توجه به اینکه افزونه می‌تواند از ادغام OAuth یا توکن‌های دسترسی شخصی (PAT) استفاده کند، لطفاً هر دو را بررسی کرده و در صورت لزوم لغو کنید:

  • برای لغو دسترسی برای ادغام OAuth، به برنامه‌ها > برنامه‌های مجاز OAuth بروید و دسترسی به توکن ادغام JetBrains IDE را لغو کنید.
  • برای لغو دسترسی برای PATها، به Personal access tokens بروید و توکن صادر شده برای افزونه GitHub را حذف کنید. نام توکن پیش‌فرض IntelliJ IDEA GitHub integration plugin است، اما ممکن است شما از یک نام دلخواه استفاده کنید.

پس از لغو دسترسی برای توکن(ها)، باید افزونه را دوباره راه‌اندازی کنید تا تمام ویژگی‌های افزونه، از جمله عملیات Git، دوباره کار کنند.

ما از هرگونه ناراحتی پیش آمده عذرخواهی می‌کنیم و از همه کاربران می‌خواهیم که برای محافظت از کد و داده‌های خود، فوراً به‌روزرسانی کنند.

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

اندروید استودیو جلی‌فیش | 2023.3.1 پچ 1 و AGP 8.4.1 (مه 2024)

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

کلاس‌های کتابخانه کوچک شده‌اند

با شروع از افزونه اندروید گریدل ۸.۴، اگر یک پروژه کتابخانه اندروید کوچک‌سازی شود، کلاس‌های برنامه کوچک‌شده برای انتشار بین پروژه‌ای منتشر می‌شوند. این بدان معناست که اگر یک برنامه به نسخه کوچک‌شده زیرپروژه‌های کتابخانه اندروید وابسته باشد، APK شامل کلاس‌های کتابخانه اندروید کوچک‌شده خواهد بود. در صورتی که کلاس‌هایی در APK وجود نداشته باشند، ممکن است لازم باشد قوانین نگهداری کتابخانه را تنظیم کنید.

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

برای بازگشت به رفتار قبلی، android.disableMinifyLocalDependenciesForLibraries را در فایل gradle.properties تنظیم کنید و یک باگ ثبت کنید . نسخه‌های آینده AGP این پرچم را حذف خواهند کرد.

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

افزونه اندروید گریدل ۸.۴.۲

مشکلات برطرف شده
افزونه گرادل اندروید
به نظر می‌رسد AGP 8.4 دانلودهای GMD را در CI با مشکل مواجه می‌کند.

افزونه اندروید گریدل ۸.۴.۱

مشکلات برطرف شده
افزونه گرادل اندروید
اجازه دهید هشدار مربوط به منسوخ شدن پشتیبانی JDK 21 برای هدف قرار دادن جاوا ۸ سرکوب شود
دکسر (D8)
java.lang.VerifyError: کلاس تأییدکننده رد شد
خطای تبدیل فرمت نسخه جدید R8 پس از مبهم‌سازی
ممکن است نسخه‌های میانی، محتوای مصنوعی سراسری کاملی برای stubها نداشته باشند.

افزونه اندروید گریدل ۸.۴.۰

مشکلات برطرف شده
افزونه گرادل اندروید
پیام خطای مربوط به اینکه چرا گزینه `--release` نمی‌تواند برای JavaCompile استفاده شود را بهبود بخشید.
غیرفعال کردن ذخیره سازی MergeSourceSetFolders با استفاده از @DoNotCacheByDefault
تنظیم نسخه JaCoCo در AGP 8.2.0 امکان‌پذیر نیست
DynamicFeatureBuildType مقدار isDebuggable ندارد.
کلاس‌های کتابخانه‌ای کوچک‌سازی‌شده برای استفاده بین پروژه‌ای به درستی منتشر نمی‌شوند.
ارائه API نوع Variant#sources که فایل‌های تولید شده را حذف می‌کند
مدل‌های AGP شامل وابستگی‌های پروژه پلتفرم جاوا نیستند.
ExtractAarTransform برای aarهایی که class.jar ندارند، classes.jar غیرقابل تکرار ایجاد می‌کند.
اجازه پیکربندی sourceInformation از ComposeOptions
فیلد sdk_runtime در پیام android.bundle.DeviceSpec پیدا نشد.
پشتیبانی از compileOnlyApi
هنگام غیرفعال شدن پردازش منابع، R8 در یک ماژول کتابخانه از کار می‌افتد
اضافه کردن قابلیت تغییر نام مصنوع در حین تبدیل
افزودن خروجی وظیفه به عنوان srcDir از sourceSets.androidMain.resources وابستگی‌های وظیفه ایجاد نمی‌کند.
AndroidPluginVersion.toString() صفرهای اول را ندارد.
Artifacts.add(FileSystemLocation) باید محدودکننده‌تر باشد.
AGP 8.3.0-alpha11 فایل APK منتشر شده‌ای تولید می‌کند که هنگام راه‌اندازی با خطای android.content.res.Resources$NotFoundException از کار می‌افتد.
کار نصب افزونه اندروید Gradle نسخه ۸.۲.۰ در پروژه‌ای که از ویژگی‌های پویا استفاده می‌کند، با شکست مواجه می‌شود.
کامپایل AIDL با خطای IndexOutOfBoundsException مواجه می‌شود: اندیس 0 برای طول 0 خارج از محدوده است.
مشکل مدیریت ورودی‌های افزایشی MergeJavaResourcesTask
AGP 8.3.0-alpha02 به کتابخانه‌هایی با آسیب‌پذیری‌های امنیتی شناخته‌شده وابسته است.
الگوی فعالیت انتخاب شده به پروژه‌ای با وابستگی‌های androidx.* نیاز دارد.
دستیار ارتقاء AGP به اشتباه consumerProguardFiles را از ماژول حذف می‌کند
دستیار ارتقاء AGP بی‌نهایت بار می‌شود
SourceDirectories#static نباید به وظیفه GenerateBuildConfig وابسته باشد
پیش‌نمایش نوشتن قادر به حل کلاس‌ها از وابستگی انتقالی نیست
AGP 8.3 فایل zipApksFor Task را می‌شکند
مصنوعات دسکتاپ AndroidX که در APK اندروید بسته‌بندی شده‌اند
پرز
GradleModelMocker چارچوب تست Lint اجازه تنظیم نسخه کتابخانه را نمی‌دهد
Lint K2 UAST: UCallableReferenceExpression نوع صلاحیت اشتباه را گزارش می‌دهد
Lint با useK2Uast=true در توابع سربارگذاری شده، مثبت کاذب می‌دهد.
[BuildTool/Lint] ویژگی سازنده ChecksSdkIntAtLeast
ادغام Lint
Lint قادر به رفع ابهام از وابستگی KMP نیست