پلاگین Android Gradle 8.2.0 (نوامبر 2023)

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

سازگاری

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

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

ماکروی جدید برای مشخص کردن مسیر JDK

#GRADLE_LOCAL_JAVA_HOME یک ماکروی جدید است که می‌توانید برای مشخص کردن مسیر JDK از آن استفاده کنید. این کار، تعیین مسیر اصلی جاوا که برای اجرای Daemon (فرآیند پس‌زمینه) Gradle برای پروژه شما استفاده می‌شود را ایمن‌تر و آسان‌تر می‌کند. انتخاب مسیر در فیلد java.home در فایل .gradle/config.properties ذخیره می‌شود. این فیلد را از طریق تنظیمات Gradle JDK در اندروید استودیو تنظیم کنید: File (یا اندروید استودیو در macOS) > Settings > Build, Execution, Deployment > Build Tools > Gradle .

پروژه‌های جدید به طور پیش‌فرض از #GRADLE_LOCAL_JAVA_HOME استفاده خواهند کرد. پروژه‌های موجود پس از همگام‌سازی موفقیت‌آمیز، به طور خودکار به ماکروی جدید منتقل می‌شوند، مگر اینکه از قبل از ماکرویی مانند #JAVA_HOME استفاده کنید.

مزایای اصلی ماکرو جدید به شرح زیر است:

  • شما می‌توانید مسیر JDK را به صورت دستی تغییر دهید تا همگام‌سازی بدون باز کردن پروژه انجام شود.
  • خطاهای کمتری مربوط به نسخه‌های ناسازگار Gradle و JDK پروژه وجود دارد زیرا یک منبع واحد برای انتخاب Gradle JDK شما وجود دارد.

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

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

مشکلات برطرف شده
افزونه گرادل اندروید
تنظیم نسخه JaCoCo در AGP 8.2.0 امکان‌پذیر نیست
دکسر (D8)
[کتابخانه desugared] کتابخانه Desugared نسخه ۲.۱ با نسخه‌های قبلی R8 سازگار نیست.
بهینه‌سازی‌ها حتی فقط با D8 هم اجرا می‌شوند؟
شرینکر (R8)
[R8 8.3.21] R8 8.3.21 به میزان ۱.۵۷ مگابایت از R8 8.1.56 بزرگتر است.
تابع ()class.getInterfaces مقدار خالی برمی‌گرداند.

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

مشکلات برطرف شده
افزونه گرادل اندروید
وقتی کلاس‌های زیرپروژه‌ها از طریق تبدیل‌های مصنوعات، dex شده‌اند، وظیفه dexing را روی آنها اجرا نکنید.
افزونه Gradle اندروید با JavaVersion.VERSION_11 و OpenJDK 21 ea ناموفق بود
دکسر (D8)
رکوردهای Desugar برای اندروید U
شرینکر (R8)
R8 یک dex خراب تولید می‌کند که منجر به استثنای تبدیل کلاس در زمان اجرا می‌شود.
R8 باعث تغییر رابط به رابط غیرقابل دسترس می‌شود
خرابی SDK مربوط به R8 Flurry با AGP 8.2.0
اندروید - R8 باعث از کار افتادن زیرکلاس LinearLayoutManager می‌شود
خطای ClassCastException در R8 زمانی که بسته‌بندی مجدد فعال است و shrinking، obfuscation و optimization غیرفعال هستند.
R8 در BridgeAnalyzer.analyzeMethod گیر کرده است
R8 نسخه ۸.۲.۳۳، "java.lang.VerifyError: نوع نامناسب در پشته عملوند" پس از ارتقا، از کار افتاد.

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

مشکلات برطرف شده
افزونه گرادل اندروید
انواع منابع سفارشی باید مجموعه منابع چند منظوره ایجاد کنند
بررسی نسخه SDK، کاربران افزونه‌های SDK را مدیریت نمی‌کند.
DependenciesInfoBuilder نیاز به به‌روزرسانی API + مستندات دارد
DexingNoClasspathTransform (minSdk >= 24) با هدف جاوا ۱۱ به دلیل فقدان اعضای لانه با شکست مواجه می‌شود.
DslExtension.Builder.extendProjectWith() طبق توضیحات Groovy کار نمی‌کند
API مربوط به VariantSelector.withFlavor را که از kotlin.Pair استفاده نمی‌کند، اضافه کنید.
وظیفه تحلیل لینت اندروید ( ‎(:lintAnalyzeExternalRelease)‎ به دلیل تغییر `proguard.txt`‎، دچار از دست رفتن حافظه پنهان شده است.
مانیفست ادغام‌شده‌ی برنامه شامل ویژگی‌های extractNativeLibs و useEmbeddedDex از وابستگی‌ها است.
AIDL با build-tools نسخه ۳۳.۰.۰ کار نمی‌کند.
AGP: مسیر ابزار AIDL و فایل چارچوب AIDL را به عنوان API عمومی نمایش دهید
درخواست: اجازه دهید IDE راه حلی برای "PermittedSubclasses requires ASM9" ارائه دهد
هنگام کامپایل AGP، بایت‌کد ۱۷ را هدف قرار دهید
حذف VariantManager.getModifiedName
AndroidTest.packaging.jniLibs.keepDebugSymbols بر بسته‌بندی androidTest تأثیری ندارد
وظایف تست ابزار دقیق GMD متوقف می‌شوند و پس از تلاش مجدد، شروع به شکست می‌کنند.
generateLocaleConfig در agp 8.1.0 از ترتیب غیرقطعی استفاده می‌کند و باعث اختلال در ساخت‌های قابل تکرار می‌شود.
ProcessApplicationManifest.navigationJsons فایل‌هایی با مسیرهای مطلق دارد
دسترسی به GradleBuildProject.Builder از طریق AnalyticsConfiguratorService پس از ایجاد AnalyticsService مجاز نیست.
AndroidTest.packaging.jniLibs.keepDebugSymbols بر بسته‌بندی androidTest تأثیری ندارد
کامپایل برای مقادیر رنگی غیرمجاز مجاز است
"ReplaceWith" نادرست برای VariantBuilder
Gradle 8.1 به دلیل وجود .gradle/.android/analytics.settings، ذخیره سازی پیکربندی را مختل می‌کند.
پیام‌های منسوخ‌شده از «ReplaceWith» استفاده نمی‌کنند
راهی برای دریافت نسخه پیش‌فرض NDK ارائه دهید
افزونه‌ی اندروید گریدل برای اجرا به جاوا نسخه ۱۷ نیاز دارد.
ناسازگاری ASM Transform و toAppend()
رفع خطاهای LintErrors هنگام اجرای lint با K2 UAST از طریق Gradle در یک پروژه KMP
پشتیبانی از missingDimensionStrategy در سطح Variant، و احتمالاً تطبیق نوع/طعم ساخت (Fallback)
فایل `android.injected.studio.version` در اندروید استودیو Giraffe حذف شد.
افزودن قابلیت غیرفعال کردن AndroidXDependencyCheck
generateLocaleConfig در agp 8.1.0 از ترتیب غیرقطعی استفاده می‌کند و باعث اختلال در ساخت‌های قابل تکرار می‌شود.
الزامات نسخه R8 / D8 را در فراداده‌های AAR اعلام کنید (مثلاً برای coreLibraryDesugaring و API جدید out-of-lining)
هشدار همگام‌سازی: «پس از ایجاد AnalyticsService، نباید از طریق AnalyticsConfiguratorService به GradleBuildProject.Builder دسترسی پیدا کرد»
به‌روزرسانی به Gradle 8.2 milestone یا RC
دسترسی به 'java.lang.Comparable' امکان‌پذیر نیست
androidResources در ماژول کتابخانه اندروید موجود نیست
اجرای وظیفه ':app:mergeReleaseClasses' پس از به‌روزرسانی AGP از ۸.۰.۲ به ۸.۱.۰ با شکست مواجه شد.
Gradle 8.1 به دلیل وجود .gradle/.android/analytics.settings، ذخیره سازی پیکربندی را مختل می‌کند.
[AGP 8.1.0] اگر هر دو splits.abi.isEnable و testOptions.unitTests.isIncludeAndroidResources درست باشند، تست ./gradlew با پیام "Unable to find manifest output" با شکست مواجه می‌شود.
اندروید استودیو Giraffe نسخه VersionCodeOverride را با AGP 8.1 رعایت نمی‌کند.
AGP 8.1.0 پس از اجرای تست‌های ابزار دقیق، برنامه را حذف نصب می‌کند - 7.4.2 این کار را نمی‌کند
تبدیل فایل APK منجر به خطایی در ListingFileRedirectTask می‌شود.
رگرسیون جوجه تیغی: دکمه اجرا چند ثانیه به تأخیر می‌افتد (در حال ایجاد مشخصات)
دکسر (D8)
فعال کردن رکوردهای بومی و کلاس‌های مهر و موم شده هنگام dexing برای min-api 34 و بالاتر
پرز
بررسی lint نمونه‌سازی‌شده، AppComponentFactory را به خوبی مدیریت نمی‌کند.
نسخه‌های آلفای Lint 8.2.0 هنوز از ایمپورت توابع سطح بالا در کاتلین پشتیبانی نمی‌کنند.
گزینه‌ای اضافه کنید که شماره خط و ستون در خط پایه lint لحاظ نشود
گزینه‌ای اضافه کنید که شماره خط و ستون در خط پایه lint لحاظ نشود
تست‌های Lint از ویژگی‌های زبان جاوا ۱۷ پشتیبانی نمی‌کنند.
پچ اول Bumblebee 2021.1.1 می‌گوید که نسخه قدیمی (20030203.000550) از commons-io جدیدتر از 2.11.0 است.
نسخه‌های آلفای Lint 8.2.0 هنوز از ایمپورت توابع سطح بالا در کاتلین پشتیبانی نمی‌کنند.
پچ اول Bumblebee 2021.1.1 می‌گوید که نسخه قدیمی (20030203.000550) از commons-io جدیدتر از 2.11.0 است.
اندروید استودیو به طور نامناسبی نسخه مشخص شده را به عنوان قدیمی علامت گذاری می‌کند.
Lint هنگام استفاده از K2 UAST، مسئله UseValueOf را نادیده می‌گیرد
مشکلات غیرمنتظره از پروژه دیگری که توسط Android Lint علامت‌گذاری شده است
خطای Android Lint در کتابخانه KMP با `property 'variantInputs.name' does not have a configure value``
ادغام Lint
خطای lint مربوط به DuplicatePlatformClasses از وابستگی testImplementation
شرینکر (R8)
java.lang.VerifyError: کلاس تأییدکننده رد شد
هنگام استفاده از کتابخانه Apache POI، ساخت روی :minifyReleaseWithR8 گیر می‌کند
کاتلین ۱.۹ باعث می‌شود که اگر nullcheckها حذف شوند، لامبداهای کاتلین توسط R8 از بین بروند.