الإصدار 8.2.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android (تشرين الثاني/نوفمبر 2023)

يُعدّ الإصدار 8.2.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android إصدارًا رئيسيًا يتضمّن مجموعة متنوعة من التحسينات والميزات الجديدة.

التوافق

الحد الأقصى لمستوى واجهة برمجة التطبيقات الذي يتوافق معه الإصدار 8.2 من المكوّن الإضافي لنظام Gradle المتوافق مع Android هو المستوى 34. في ما يلي معلومات أخرى حول التوافق:

الحد الأدنى للإصدار الإصدار التلقائي ملاحظات
Gradle 8.2 8.2 لمزيد من المعلومات، يُرجى الاطّلاع على مقالة تحديث Gradle.
أدوات إنشاء حِزم SDK 34.0.0 34.0.0 ثبِّت أو اضبط أدوات إنشاء حِزم SDK.
NDK لا ينطبق ‎25.1.8937393 ثبِّت أو ضبط إصدارًا مختلفًا من حزمة NDK.
JDK 17 17 لمزيد من المعلومات، يُرجى الاطّلاع على ضبط إصدار JDK.

ماكرو جديد لتحديد مسار JDK

#GRADLE_LOCAL_JAVA_HOME هو وحدة ماكرو جديدة يمكنك استخدامها لتحديد JDK المسار. ويجعل ذلك من الأسهل والأكثر أمانًا تحديد مسار Java الرئيسي المستخدَم لتنفيذ ملف برمجي تابع لنظام التشغيل (عملية في الخلفية) في Gradle لمشروعك. يتم تخزين اختيار المسار في الحقل java.home في ملف .gradle/config.properties. اضبط هذا الحقل من خلال إعدادات JDK في Gradle في "استوديو Android": ملف (أو استوديو Android على نظام التشغيل macOS) > الإعدادات > الإنشاء والتنفيذ والنشر > أدوات الإنشاء > Gradle.

ستستخدم المشاريع الجديدة #GRADLE_LOCAL_JAVA_HOME تلقائيًا. سيتم نقل المشاريع الحالية تلقائيًا إلى وحدة الماكرو الجديدة بعد إجراء عملية مزامنة ناجحة ما لم يكن لديك وحدة ماكرو مثل #JAVA_HOME.

في ما يلي المزايا الرئيسية للوحدات الضخمة الجديدة:

  • يمكنك تعديل مسار JDK يدويًا لبدء المزامنة بدون فتح مشروعك أولاً.
  • عدد أخطاء أقلّ مرتبطة بإصدارات Gradle وJDK غير المتوافقة مع المشروع، لأنّه يتوفر مصدر واحد للحقائق لاختيار JDK في Gradle.

المشاكل التي تم إصلاحها

الإصدار 8.2.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android

المشاكل التي تم إصلاحها
مكوّن إضافي لنظام Gradle المتوافق مع Android
يجب أن تُنشئ أنواع المصادر المخصّصة مجموعات مصادر متعددة النكهات.
لا يتعامل التحقّق من إصدار حزمة SDK مع مستخدمي إضافات حزمة SDK.
يحتاج DependenciesInfoBuilder إلى تحديث واجهة برمجة التطبيقات + مستند
تعذُّر DexingNoClasspathTransform (minSdk >= 24) مع استهداف Java 11 بسبب عدم توفّر أعضاء Nest
لا تعمل دالة DslExtension.Builder.extendProjectWith() على النحو الموضّح في Groovy
أضِف واجهة برمجة التطبيقات VariantSelector.withFlavor التي لا تستخدِم kotlin.Pair.
حدث خطأ في ذاكرة التخزين المؤقت لـ AndroidLintAnalysisTask (:lintAnalyzeExternalRelease) بسبب تغيير ملف proguard.txt
يحتوي بيان التطبيق المدمج على سمتَي extractNativeLibs وuseEmbeddedDex من العناصر المُعتمدة.
تعذُّر استخدام AIDL مع الإصدار 33.0.0 من حِزم أدوات الإنشاء
AGP: Expose path to AIDL tool and framework AIDL file as public API
الطلب: السماح لبيئة تطوير البرامج (IDE) بتقديم حلّ لخطأ "تتطلب فئات فرعية مسموح بها استخدام ASM9"
استهدِف الرمز البرمجي الثانوي 17 عند تجميع AGP.
إزالة VariantManager.getModifiedName
لا يؤثّر AndroidTest.packaging.jniLibs.keepDebugSymbols في تعبئة androidTest
تجمُّد مهام اختبار أدوات قياس أداء Google Debugger (GMD) وبدء التوقّف عن العمل عند إعادة المحاولة
تستخدِم دالة generateLocaleConfig في الإصدار 8.1.0 من agp ترتيبًا غير محدّد، ما يؤدي إلى إيقاف عمليات إنشاء الإصدارات القابلة للتكرار.
يحتوي ProcessApplicationManifest.navigationJsons على ملفات تتضمّن مسارات مطلقة.
لا يُسمح بالوصول إلى GradleBuildProject.Builder من خلال AnalyticsConfiguratorService بعد إنشاء AnalyticsService.
لا يؤثّر AndroidTest.packaging.jniLibs.keepDebugSymbols في تعبئة androidTest
السماح بتجميع قيم الألوان غير القانونية
قيمة "ReplaceWith" غير صحيحة لفئة VariantBuilder
يؤدي الإصدار 8.1 من Gradle إلى إيقاف ميزة التخزين المؤقت للإعدادات بسبب ملف ‎ .gradle/.android/analytics.settings
لا تستخدم رسائل الإيقاف النهائي العنصر ReplaceWith.
توفير طريقة للحصول على إصدار NDK التلقائي
يتطلّب المكوّن الإضافي لنظام Gradle المتوافق مع Android تشغيل Java 17.
عدم توافق ASM Transform وtoAppend()
إصلاح أخطاء Lint عند تشغيل Lint مع K2 UAST عبر Gradle في مشروع KMP
إتاحة استخدام missingDimensionStrategy على مستوى الصيغة، وربما Fallback لمطابقة نوع/نمط الإصدار
تمت إزالة android.injected.studio.version في الإصدار Giraffe من "استوديو Android"
إضافة إمكانية إيقاف AndroidXDependencyCheck
تستخدِم دالة generateLocaleConfig في الإصدار 8.1.0 من agp ترتيبًا غير محدّد، ما يؤدي إلى إيقاف عمليات إنشاء الإصدارات القابلة للتكرار.
عرض متطلبات إصدار R8 / D8 في البيانات الوصفية لملف AAR (مثلاً لـ coreLibraryDesugaring وواجهة برمجة التطبيقات الجديدة غير المضمّنة)
تحذير بشأن المزامنة: "يجب عدم الوصول إلى GradleBuildProject.Builder من خلال AnalyticsConfiguratorService بعد إنشاء AnalyticsService"
التحديث إلى إصدار Gradle 8.2 العلني أو الإصدار القابل للمراجعة
لا يمكن الوصول إلى java.lang.Comparable
لا تتوفّر androidResources في وحدة مكتبة Android.
تعذّر تنفيذ المهمة ‎:app:mergeReleaseClasses بعد تحديث AGP من الإصدار 8.0.2 إلى الإصدار 8.1.0
يؤدي الإصدار 8.1 من Gradle إلى إيقاف ميزة التخزين المؤقت للإعدادات بسبب ملف ‎ .gradle/.android/analytics.settings
[AGP 8.1.0] تعذّر تنفيذ الأمر ./gradlew test وظهور الرسالة "تعذّر العثور على ناتج البيان" إذا كانت كل من القيمتَين splits.abi.isEnable وtestOptions.unitTests.isIncludeAndroidResources صحيحتَين
لا يراعي الإصدار Giraffe من "استوديو Android" الإعداد versionCodeOverride مع AGP 8.1.
يؤدي الإصدار 8.1.0 من AGP إلى إلغاء تثبيت التطبيق بعد تشغيل الاختبارات المستندة إلى الأدوات، في حين لا يؤدي الإصدار 7.4.2 إلى ذلك.
يؤدي تحويل حزمة APK إلى حدوث خطأ في ListingFileRedirectTask
HEDGEHOG REGRESSION: Run button is delayed by a few seconds (Creating spec)
Dexer (D8)
تفعيل فئات "التسجيل الأصلي" و"الفئات المُغلقة" عند تحويل التطبيق إلى ملف APK لنظام التشغيل Android 34 أو الإصدارات الأحدث
Lint
لا يعالج فحص Lint الذي تم إنشاؤه على الفور AppComponentFactory بشكل جيد.
لا تزال الإصدارات التجريبية من Lint 8.2.0 لا تتيح استيراد الدوالّ من المستوى الأعلى في kotlin.
إضافة خيار لعدم تضمين أرقام الأسطر والأعمدة في قاعدة بيانات التدقيق
إضافة خيار لعدم تضمين أرقام الأسطر والأعمدة في قاعدة بيانات التدقيق
لا تتوافق اختبارات Lint مع ميزات لغة Java 17
يشير تصحيح 1 من Bumblebee 2021.1.1 إلى أنّ الإصدار القديم (20030203.000550) من commons-io أحدث من 2.11.0.
لا تزال الإصدارات التجريبية من Lint 8.2.0 لا تتيح استيراد الدوالّ من المستوى الأعلى في kotlin.
يشير تصحيح 1 من Bumblebee 2021.1.1 إلى أنّ الإصدار القديم (20030203.000550) من commons-io أحدث من 2.11.0.
يضع "استوديو Android" علامة على الإصدار المحدّد بأنّه قديم بشكل غير صحيح.
يتجاهل Lint مشكلة UseValueOf عند استخدام K2 UAST
مشاكل غير متوقّعة من مشروع آخر رصدتها أداة Android Lint
يتعذّر على أداة Android Lint فحص مكتبة KMP التي تحتوي على السمة "لا تحتوي السمة variantInputs.name على قيمة تم ضبطها".
دمج Lint
خطأ في أداة lint بسبب DuplicatePlatformClasses من التبعية testImplementation
Shrinker (R8)
java.lang.VerifyError: Verifier rejected class
يتعذّر إكمال عملية الإنشاء عند الوصول إلى :minifyReleaseWithR8 عند استخدام مكتبة Apache POI
تؤدي لغة Kotlin 1.9 إلى أن يزيل R8 دالات Kotlin lambda في حال إزالة عمليات التحقّق من القيمة الخالية.

الإصدار 8.2.1 من المكوّن الإضافي لنظام Gradle المتوافق مع Android

المشاكل التي تم إصلاحها
مكوّن إضافي لنظام Gradle المتوافق مع Android
عدم تنفيذ مهمة تحويل DEX على فئات المشاريع الفرعية عندما تكون قد تم تحويلها من خلال عمليات تحويل العناصر
تعذّر استخدام المكوّن الإضافي لنظام Gradle المتوافق مع Android مع JavaVersion.VERSION_11 وOpenJDK 21 ea
Dexer (D8)
إزالة الترميز السكري للسجلات في Android U
Shrinker (R8)
يُنشئ R8 ملف dex تالفًا يؤدي إلى حدوث استثناء في تحويل الفئة أثناء التشغيل
R8 causing interface change to inaccessible interface
تعطُّل حزمة تطوير البرامج (SDK) Flurry R8 مع AGP 8.2.0
Android - يتسبب R8 في تعطُّل فئة فرعية من LinearLayoutManager
ClassCastException في R8 عند تفعيل إعادة الحزمة وإيقاف تصغير الرموز البرمجية وإخفاء مفاتيح فك التشفير والتحسين
R8 عالق في BridgeAnalyzer.analyzeMethod
تعطُّل وقت التشغيل في R8 v8.2.33، "java.lang.VerifyError: Bad type on operand stack" بعد الترقية

الإصدار 8.2.2 من المكوّن الإضافي لنظام Gradle المتوافق مع Android

المشاكل التي تم إصلاحها
مكوّن إضافي لنظام Gradle المتوافق مع Android
تعذّر ضبط إصدار JaCoCo في AGP 8.2.0
Dexer (D8)
[desugared library] الإصدار 2.1 من مكتبة desugared غير متوافق مع الإصدارات السابقة من R8
هل يتم إجراء التحسينات حتى مع استخدام D8 فقط؟
Shrinker (R8)
[R8 8.3.21] حجم الإصدار R8 8.3.21 أكبر من الإصدار R8 8.1.56 بمقدار 1.57 ميغابايت
class.getInterfaces() تُعرِض قيمة فارغة