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

پلاگین Android Gradle 8.2.0 یک نسخه اصلی است که شامل انواع ویژگی ها و بهبودهای جدید است.

سازگاری

حداکثر سطح API که افزونه Android Gradle 8.2 پشتیبانی می کند، سطح API 34 است. در اینجا سایر اطلاعات سازگاری وجود دارد:

حداقل نسخه نسخه پیش فرض یادداشت ها
گریدل 8.2 8.2 برای کسب اطلاعات بیشتر، به روز رسانی Gradle را ببینید.
ابزارهای ساخت SDK 34.0.0 34.0.0 ابزارهای ساخت SDK را نصب یا پیکربندی کنید .
NDK N/A 25.1.8937393 نسخه دیگری از NDK را نصب یا پیکربندی کنید .
JDK 17 17 برای کسب اطلاعات بیشتر، به تنظیم نسخه JDK مراجعه کنید.

ماکرو جدید برای تعیین مسیر JDK

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

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

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

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

مسائل رفع شد

پلاگین اندروید Gradle 8.2.0

رفع مشکلات
پلاگین اندروید Gradle
انواع منبع سفارشی باید مجموعه های منبع چند طعمی ایجاد کنند
بررسی نسخه SDK به کاربران برنامه های افزودنی SDK رسیدگی نمی کند
DependenciesInfoBuilder به آپدیت API + doc نیاز دارد
DexingNoClasspathTransform (minSdk >= 24) با هدف جاوا 11 به دلیل گم شدن اعضای آشیانه با شکست مواجه شد
DslExtension.Builder.extendProjectWith() همانطور که در Groovy توضیح داده شد کار نمی کند
VariantSelector.withFlavor API را اضافه کنید که از kotlin.Pair استفاده نمی کند
AndroidLintAnalysisTask ( :lintAnalyzeExternalRelease) دارای حافظه پنهان است زیرا «proguard.txt» تغییر کرده است.
مانیفست ادغام شده برنامه حاوی extractNativeLibs و استفاده از ویژگی‌های EmbeddedDex از وابستگی‌ها است
AIDL با build-tools 33.0.0 شکست می خورد
AGP: مسیر ابزار و چارچوب AIDL فایل AIDL را به عنوان API عمومی نمایش دهید
درخواست: اجازه دهید IDE یک اصلاح برای "PermittedSubclasses به ASM9 نیاز دارد" ارائه دهد.
بایت کد 17 را هنگام کامپایل AGP هدف قرار دهید
VariantManager.getModifiedName را حذف کنید
AndroidTest.packaging.jniLibs.keepDebugSymbols بر بسته بندی AndroidTest تأثیر نمی گذارد
وظایف تست ابزار دقیق GMD متوقف می شوند و پس از تلاش مجدد شروع به شکست می کنند
GenerationLocaleConfig در 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 نشان دهید
افزونه Android Gradle برای اجرا به جاوا 17 نیاز دارد.
ناسازگاری ASM Transform و toAppend().
هنگام اجرای lint با K2 UAST از طریق Gradle در پروژه KMP، خطاهای LintError را برطرف کنید
پشتیبانی از Variant level missingDimensionStrategy و احتمالا ساخت تطبیق نوع/طعمFallback
«android.injected.studio.version» در Android Studio Giraffe حذف شد
قابلیت غیرفعال کردن AndroidXDependencyCheck را اضافه کنید
GenerationLocaleConfig در agp 8.1.0 از ترتیب غیر قطعی استفاده می کند و ساخت های قابل تکرار را شکست می دهد.
الزامات نسخه R8/D8 را در ابرداده AAR تبلیغ کنید (به عنوان مثال برای coreLibraryDesugaring و API جدید خارج از خط)
هشدار همگام‌سازی: "بعد از ایجاد AnalyticsService نباید از طریق AnalyticsConfiguratorService به GradleBuildProject.Builder دسترسی داشت."
به Gradle 8.2 milestone یا RC به روز رسانی کنید
دسترسی به 'java.lang.Comparable' امکان پذیر نیست
androidResources در ماژول کتابخانه اندروید در دسترس نیست
پس از به‌روزرسانی 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 با "Unable to find output manifest" ناموفق است.
Android Studio Giraffe به نسخه CodeOverride با AGP 8.1 احترام نمی گذارد
AGP 8.1.0 برنامه را پس از اجرای تست های ابزاری حذف نصب می کند - 7.4.2 این کار را انجام نمی دهد
تغییر شکل یک APK منجر به خطا در ListingFileRedirectTask می شود
رگرسیون جوجه تیغی: دکمه اجرا با چند ثانیه تاخیر (در حال ایجاد مشخصات)
دکسر (D8)
هنگام dexing برای min-api 34 و بالاتر، رکورد بومی و کلاس‌های مهر و موم شده را فعال کنید
لینت
بررسی پرزهای Instantiated AppComponentFactory را به خوبی مدیریت نمی کند
آلفاهای Lint 8.2.0 هنوز از وارد کردن عملکرد سطح بالا در کاتلین پشتیبانی نمی کنند
گزینه ای اضافه کنید تا شماره خط و ستون در خط پایه پرز لحاظ نشود
گزینه ای اضافه کنید تا شماره خط و ستون در خط پایه پرز لحاظ نشود
تست های لینت از ویژگی های زبان جاوا 17 پشتیبانی نمی کنند
Bumblebee 2021.1.1 Patch 1 می گوید نسخه قدیمی (20030203.000550) Commons-io جدیدتر از 2.11.0 است.
آلفاهای Lint 8.2.0 هنوز از وارد کردن عملکرد سطح بالا در کاتلین پشتیبانی نمی کنند
Bumblebee 2021.1.1 Patch 1 می گوید نسخه قدیمی (20030203.000550) Commons-io جدیدتر از 2.11.0 است.
Android Studio نسخه مشخص شده را به‌طور نامناسب به‌عنوان قدیمی علامت‌گذاری می‌کند.
Lint هنگام استفاده از K2 UAST مشکل UseValueOf را نادیده می گیرد
مشکلات غیرمنتظره از پروژه دیگری که توسط Android Lint پرچم گذاری شده است
Android Lint در یک کتابخانه KMP با «ویژگی «variantInputs.name» مقدار پیکربندی‌شده ندارد.
ادغام لینت
خطای پرز DuplicatePlatformClasses از وابستگی testImplementation
کوچک کننده (R8)
java.lang.VerifyError: تأییدکننده کلاس رد شد
هنگام استفاده از کتابخانه POI Apache، بیلد روی :minifyReleaseWithR8 گیر می کند
کاتلین 1.9 باعث می‌شود که لامبداهای کاتلین توسط R8 از بین بروند اگر چک‌های تهی حذف شوند.

پلاگین اندروید Gradle 8.2.1

رفع مشکلات
پلاگین اندروید Gradle
وقتی زیرپروژه‌ها قبلاً از طریق تبدیل مصنوعات dex'd شده‌اند، کار dexing را روی کلاس‌های زیر پروژه اجرا نکنید.
افزونه Gradle Android با JavaVersion.VERSION_11 و OpenJDK 21 ea ناموفق بود
دکسر (D8)
رکوردهای Desugar برای اندروید U
کوچک کننده (R8)
R8 dex شکسته را تولید می کند که منجر به استثنای کلاس cast در زمان اجرا می شود
R8 باعث تغییر رابط به رابط غیر قابل دسترس می شود
خرابی R8 Flurry SDK با AGP 8.2.0
Android - R8 باعث از کار افتادن زیر کلاس LinearLayoutManager می شود
ClassCastException در R8 هنگامی که بسته بندی مجدد روشن است و کوچک می شود، مبهم سازی و بهینه سازی خاموش است
R8 در BridgeAnalyzer.analyzeMethod گیر کرده است
R8 v8.2.33، "java.lang.VerifyError: نوع بد در پشته عملوند" پس از ارتقاء خراب می شود

پلاگین اندروید Gradle 8.2.2

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