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

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

سازگاری

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

حداقل نسخه نسخه پیش‌فرض یادداشت‌ها
Gradle 9.4.1 9.4.1 برای کسب اطلاعات بیشتر، به‌روزرسانی Gradle را ببینید.
ابزارهای ساخت کیت توسعه نرم‌افزار ‫۳۶.۰.۰ ‫۳۶.۰.۰ «ابزارهای ساخت کیت توسعه نرم‌افزار» را نصب یا پیکربندی کنید.
NDK موجود نیست 28.2.13676358 نسخه دیگری از NDK را نصب یا پیکربندی کنید.
JDK 17 17 برای کسب اطلاعات بیشتر، تنظیم نسخه JDK را ببینید.
افزایه Kotlin Gradle (KGP) ‫۲.۲.۱۰ ‫۲.۲.۱۰ برای کسب اطلاعات بیشتر، به وابستگی زمان اجرا به افزایه Kotlin Gradle مراجعه کنید.

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

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

تغییرات R8

تغییرات R8 زیر در AGP 9.2.0 گنجانده شده است.

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

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

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

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

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

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

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

-keepattributes RuntimeInvisibleAnnotations,
                RuntimeInvisibleParameterAnnotations,
                RuntimeInvisibleTypeAnnotations

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

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

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

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

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

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

افزایه Android Gradle نسخه ۹.۲.۱

مشکلات برطرف‌شده
افزایه Android Gradle
java.lang.ClassNotFoundException: پس‌از ارتقا دادن gradle به 9.2.0، کلاس «com.android.tools.r8.RecordTag» پیدا نشد

افزایه Android Gradle نسخه ۹.۲.۰

مشکلات برطرف‌شده
افزایه Android Gradle
اگر کاربران 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` حاوی مسیرهای فایل مطلق است
‫R8D8ThreadPoolBuildService ثبت نشده است
خطای JdkImageTransform با JDK 26
به‌طور خودکار minAgpVersion را در فراداده AAR در AGP 10.0 کدبندی کنید
تغییر نام APK بااستفاده از AGP DSL جدید
خطا هنگام دسترسی (اما نه ارزیابی) bootClasspath IllegalStateException: targetCompatibility هنوز نهایی نشده است
مجموعه منبع keepRules برای کتابخانه‌ها کار نمی‌کند
گنجاندن اظهارنامه سازگاری زیرنویس ناشنوایان در AGP
وابستگی افزایه Kotlin Gradle را به ۲.۳.۱۰ به‌روز کنید
اجازه دادن به compileSdk بالاتر برای آزمایش‌ها نسبت‌به اصلی
Lint
غلط املایی در پیام
پنجره زمینه‌ای در گزارش‌های Lint SARIF به‌دلیل گیر کردن اشاره‌گر جبران در `SarifReporter.kt` قطع شد
کارخواه Lint Gradle فاقد ویژگی مهمی است که آن را در بهترین حالت غیرقابل‌اعتماد می‌کند
خطای Lint وقتی کاهش منابع غیرفعال است
وقتی از ثابت‌های IntDef تودرتو استفاده می‌کنید، AGP 9 Lint خطای WrongConstant گزارش می‌کند
خطای Lint وقتی کاهش منابع غیرفعال است
ادغام Lint
‫Android Lint با بررسی‌های سفارشی lint که در بایت‌کد Java 21 کامپایل شده است ناموفق است
تکالیف Lint Gradle پرچم --quiet را نادیده می‌گیرد
Shrinker (R8)
هدف‌یابی Java 11 باعث ازکارافتادن d8 می‌شود