افزونه اندروید Gradle نسخه ۹.۲.۰ (آوریل ۲۰۲۶)

افزونه اندروید گریدل ۹.۲ یک نسخه جزئی است که شامل مجموعه‌ای از ویژگی‌ها و بهبودهای جدید می‌شود.

سازگاری

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

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

پوشش یکپارچه و گزارش‌های آزمایش

AGP 9.2.0-alpha07 وظایفی را برای تولید داشبوردهای HTML معرفی می‌کند که نتایج تست و پوشش انواع مختلف تست (واحد و ابزار دقیق)، ماژول‌ها و انواع ساخت را تجمیع می‌کند و یک مرور کلی جامع را در یک داشبورد واحد ارائه می‌دهد. برای اطلاعات بیشتر، به «ایجاد گزارش‌های پوشش کد یکپارچه» و «مشاهده گزارش‌های تست یکپارچه» مراجعه کنید.

تغییرات R8

تغییرات R8 زیر در AGP 9.2.0 لحاظ شده‌اند.

معانی سختگیرانه‌تر -keepattributes برای حفظ حاشیه‌نویسی‌های نامرئی در زمان اجرا

حاشیه‌نویسی‌های نامرئی زمان اجرا را نمی‌توان در زمان اجرا خواند. بنابراین D8 بدون قید و شرط حاشیه‌نویسی‌های نامرئی زمان اجرا را حذف می‌کند، بدون اینکه گزینه‌ای برای تغییر این مورد وجود داشته باشد.

برای سازگاری با ProGuard، R8 از خروجی حاشیه‌نویسی‌های نامرئی زمان اجرا پشتیبانی می‌کند. اما هنگام کامپایل به DEX، حاشیه‌نویسی‌های نامرئی زمان اجرا معمولاً هرگز نباید حفظ شوند. با این حال، معمولاً قانون مناسب -keepattributes *Annotation* (به طور مستقیم یا غیرمستقیم از قوانین نگهدارنده مصرف‌کننده) برای R8 در نظر گرفته می‌شود تا حاشیه‌نویسی‌های قابل مشاهده زمان اجرا حفظ شوند. متأسفانه این امر منجر به حفظ حاشیه‌نویسی‌های نامرئی زمان اجرا نیز می‌شود.

برای کاهش این مشکل و تطابق بهتر با رفتار D8، الگوهای -keepattributes ‎ با wildcards دیگر با RuntimeInvisibleAnnotations ، RuntimeInvisibleParameterAnnotations و RuntimeInvisibleTypeAnnotations مطابقت ندارند. در نتیجه، حاشیه‌نویسی‌های نامرئی زمان اجرا فقط در صورتی حفظ می‌شوند که نام ویژگی به صراحت و بدون wildcards ذکر شود.

هیچ یک از قوانین زیر اکنون حاشیه‌نویسی‌های نامرئی زمان اجرا را حفظ نمی‌کنند:

-keepattributes *
-keepattributes *Annotation*
-keepattributes *Invisible*

برای اینکه حاشیه‌نویسی‌های زمان اجرا نامرئی بمانند، از قانون زیر استفاده کنید:

-keepattributes RuntimeInvisibleAnnotations,
                RuntimeInvisibleParameterAnnotations,
                RuntimeInvisibleTypeAnnotations

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

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

برای مثال، برای تطبیق تمام متدهایی که به "ForTesting" ختم نمی‌شوند، از قانون زیر استفاده کنید:

-keepclassmembers class com.example.MyClass {
  *** !*ForTesting(...);
}

الگوهای نام عضو همچنین می‌توانند در پیش‌شرط قوانین -if منفی شوند. اگر یک الگوی نام عضو منفی شده حاوی کاراکترهای عمومی باشد، چنین کاراکترهای عمومی نمی‌توانند در قانون -if به عقب ارجاع داده شوند.

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

افزونه اندروید گریدل ۹.۲.۱

مشکلات برطرف شده
افزونه گرادل اندروید
java.lang.ClassNotFoundException: بعد از ارتقاء gradle به 9.2.0، کلاس "com.android.tools.r8.RecordTag" پیدا نشد.

افزونه اندروید گریدل ۹.۲.۰

مشکلات برطرف شده
افزونه گرادل اندروید
اگر کاربران commonTest دارند اما withHostTestBuilder را فراموش کرده‌اند، به آنها هشدار بده
[fused lib - public] OkHttp شامل منابع است
نمی‌توان androidDeviceTest را با متغیرهای مانیفست در کتابخانه اجرا کرد (AGP 9.0.0 با افزونه com.android.kotlin.multiplatform.library)
اگر کاربر src/androidDeviceTest/java را با جاوا غیرفعال داشته باشد، AGP باید هشدار دهد
AGP 9.0 معادل androidComponents.onVariant برای applicationVariants.all.mergeAssetsProvider وجود ندارد
فایل‌های `*.xml.flat` حاوی مسیرهای مطلق فایل هستند
سرویس R8D8ThreadPollBuildService ثبت نشده است
خطای JdkImageTransform با JDK 26
کدگذاری خودکار minAgpVersion در متادیتای AAR در AGP 10.0
تغییر نام APK با استفاده از AGP DSL جدید
خطا هنگام دسترسی (اما نه ارزیابی) bootClasspath IllegalStateException: targetCompatibility هنوز نهایی نشده است
منبع keepRules برای کتابخانه‌ها کار نمی‌کند
جاسازی اعلامیه سازگاری CC در AGP
وابستگی افزونه Kotlin Gradle را به نسخه ۲.۳.۱۰ به‌روزرسانی کنید.
برای تست‌ها، compileSdk بالاتری نسبت به main در نظر بگیرید.
پرز
غلط املایی در پیام
پنجره متن کوتاه شده در Lint گزارش می‌دهد که SARIF به دلیل گیر کردن اشاره‌گر آفست در `SarifReporter.kt`
کلاینت Lint Gradle فاقد یک ویژگی حیاتی است که آن را در بهترین حالت غیرقابل اعتماد می‌کند.
خطای Lint هنگام غیرفعال بودن کاهش منابع
AGP 9 Lint هنگام استفاده از ثابت‌های IntDef تو در تو، خطای WrongConstant را گزارش می‌دهد.
خطای Lint هنگام غیرفعال بودن کاهش منابع
ادغام Lint
خطای Lint اندروید در بررسی‌های Lint سفارشی کامپایل شده به بایت‌کد جاوا ۲۱
وظایف Gradle از پرچم --quiet صرف نظر می‌کنند.
شرینکر (R8)
به نظر می‌رسد هدف قرار دادن جاوا ۱۱، d8 را از کار می‌اندازد.