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

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

سازگاری

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

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

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

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

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

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

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

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

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

مشکلات برطرف‌شده
افزایه Android Gradle
نسخه JaCoCo در AGP 8.2.0 تنظیم نشد
Dexer (D8)
[کتابخانه دی‌شوگرشده] نسخه ۲.۱ کتابخانه دی‌شوگرشده با نسخه‌های قبلی R8 سازگار نیست
بهینه‌سازی‌ها حتی با D8 هم اجرا می‌شوند؟
Shrinker (R8)
‫[R8 8.3.21] ‏ R8 8.3.21‏ ۱٫۵۷ مگابایت بزرگ‌تر از R8 8.1.56 است
‫class.getInterfaces()‎ خالی برمی‌گرداند

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

مشکلات برطرف‌شده
افزایه Android Gradle
وقتی کلاس‌های پروژه‌های فرعی ازطریق تبدیل‌های آرتیفکت ازقبل dex شده‌اند، تکلیف dexing را روی آن‌ها اجرا نکنید
«افزایه Android Gradle» با JavaVersion.VERSION_11 و OpenJDK 21 ea ناموفق بود
Dexer (D8)
حذف قند از سوابق برای Android U
Shrinker (R8)
‫R8 فایل dex خراب تولید می‌کند که منجر به استثنای تبدیل کلاس در زمان اجرا می‌شود
‫R8 باعث تغییر میانای کاربر به میانای کاربر غیرقابل‌دسترس می‌شود
خرابی کیت توسعه نرم‌افزار R8 Flurry با AGP 8.2.0
‫Android - R8 باعث خرابی زیرکلاس LinearLayoutManager می‌شود
وقتی بسته‌بندی مجدد روشن باشد و کوچک‌سازی، مبهم‌سازی، و بهینه‌سازی خاموش باشد، ClassCastException در R8 رخ می‌دهد
‫R8 در BridgeAnalyzer.analyzeMethod گیر کرده است
خرابی زمان اجرا R8 نسخه ۸.۲.۳۳، «java.lang.VerifyError: Bad type on operand stack» پس‌از ارتقا

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

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