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

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

التوافق

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

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

في ما يلي ميزات جديدة في الإصدار 8.3 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android".

إصدارات رموز التصحيح

في ما يلي قائمة بإصدارات رموز التصحيح في إصدار Iguana من "استوديو Android" والمكوّن الإضافي لنظام Gradle المتوافق مع Android 8.3.

الإصدار Iguana من "استوديو Android" | الإصدار 2 من حزمة تصحيح ‎2023.2.1 والإصدار 8.3.2 من المكوّن الإضافي لنظام Gradle المتوافق مع Android (أبريل 2024)

يتضمّن هذا التحديث البسيط إصلاحات الأخطاء التالية.

الإصدار Iguana من "استوديو Android" | الإصدار 1 من حزمة تصحيح ‎2023.2.1 والإصدار 8.3.1 من المكوّن الإضافي لنظام Gradle المتوافق مع Android (مارس 2024)

يتضمّن هذا التحديث البسيط إصلاحات الأخطاء التالية.

إتاحة "كتالوجات إصدارات Gradle"

يتوافق "استوديو Android" مع كتالوجات إصدارات Gradle المستندة إلى TOML، وهي ميزة تتيح لك إدارة التبعيات في مكان مركزي واحد ومشاركة التبعيات بين الوحدات أو المشاريع. يسهّل "استوديو Android" الآن عملية إعداد فهارس الإصدارات من خلال اقتراحات المحرّر والتكامل مع مربّع الحوار بنية المشروع. تعرَّف على كيفية إعداد وتكوين "فهارس إصدارات Gradle" أو كيفية نقل عملية الإنشاء إلى فهارس الإصدارات.

إكمال الرموز البرمجية والتنقّل

يوفّر "استوديو Android" ميزة إكمال الرمز البرمجي عند تعديل قائمة إصدارات بتنسيق ملف TOML أو إضافة تبعية من قائمة إصدارات إلى ملف إصدار. لاستخدام ميزة "إكمال الرمز"، اضغط على Ctrl+Space (Command+Space على أجهزة macOS). بالإضافة إلى ذلك، يمكنك التنقّل بسرعة من مرجع اعتمادية في ملف build.gradle الخاص بتطبيقك إلى المكان الذي تم تعريفه فيه في قائمة الإصدارات من خلال الضغط على Ctrl+b (Command+b على نظام التشغيل macOS).

إكمال الرمز البرمجي عند إضافة تبعية

الدمج مع مربّع الحوار "بنية المشروع"

إذا كان مشروعك يستخدم قائمة إصدارات محدّدة بتنسيق ملف TOML، يمكنك تعديل المتغيّرات التي حدّدتها من خلال مربّع الحوار بنية المشروع، ثم عرض المتغيّرات (ملف > بنية المشروع > المتغيّرات) في "استوديو Android". لكل كتالوج إصدار، هناك قائمة منسدلة تسرد المتغيرات من هذا الكتالوج. لتعديل متغيّر، انقر على قيمته واكتب القيمة الجديدة. عند حفظ هذه التغييرات، سيتم تعديل ملف TOML وفقًا لذلك.

المتغيرات من فهرس الإصدارات في مربّع الحوار "بنية المشروع"

يمكنك أيضًا تعديل التبعيات في مربّع الحوار بنية المشروع، في عرض التبعيات (ملف > بنية المشروع > التبعيات). لتعديل الإصدارات باستخدام مربّع الحوار بنية المشروع، انتقِل إلى الوحدة والاعتمادية اللتين تريد تعديلهما، ثم عدِّل الحقل الإصدار المطلوب. عند حفظ هذه التغييرات، يتم تعديل ملف TOML وفقًا لذلك. يُرجى العِلم أنّه إذا تم تحديد إصدار الاعتمادية باستخدام مُتغيِّر، سيؤدي تعديل الإصدار مباشرةً بهذه الطريقة إلى استبدال المُتغيِّر بقيمة مبرمَجة. يُرجى العِلم أيضًا أنّ إزالة الاعتمادية من ملف إصدار، سواء كنت تستخدم مربّع الحوار بنية المشروع أم لا، لن تؤدي إلى إزالة الاعتمادية من قائمة الإصدارات.

التبعيات من كتالوج إصدارات في مربّع حوار "بنية المشروع"

المشاكل والقيود المعروفة

في ما يلي المشاكل أو القيود المعروفة المتعلّقة بتوافق "كتالوجات إصدارات Gradle" مع "استوديو Android".

  • خطأ في تمييز تعريفات أسماء مستعارة للمكوّنات الإضافية في ملفات نصوص Kotlin البرمجية: عند إضافة تعريف مكوّن إضافي بالصيغة alias(libs.plugins.example)، يضيف المحرّر خطًا أحمر تحت الجزء libs. هذه مشكلة معروفة في الإصدارات 8.0 والإصدارات الأقدم من Gradle، وسيتم حلّها في إصدار مستقبلي من Gradle.

  • يتوافق "استوديو Android" فقط مع كتالوجات الإصدارات بتنسيق TOML: لا تتوفّر حاليًا ميزات إكمال الرموز البرمجية والتنقّل في "استوديو Android" ومربّع الحوار "بنية المشروع" إلا لكتالوجات الإصدارات المحدّدة بتنسيق ملف TOML. ومع ذلك، سيظل بإمكانك إضافة قائمة إصدارات مباشرةً في ملف settings.gradle واستخدام التبعيات في مشروعك.

  • لا تتوفّر إمكانية التنقّل في ملفات تصميم KTS: لا تتوفّر بعد إمكانية التنقّل إلى تعريف التبعية في قائمة الإصدارات باستخدام Control+النقر (Command+النقر على أجهزة macOS) لملفات التصميم المكتوبة باستخدام نص برمجي بلغة Kotlin.

  • يضيف "مساعد Firebase" التبعيات مباشرةً في نصوص البرامج الإنشائية: يضيف مساعد Firebase التبعيات مباشرةً إلى نصوص البرامج الإنشائية بدلاً من استخدام أدلة الإصدارات.

  • وظيفة "العثور على مواضع الاستخدام" غير متاحة: لا تتوفّر بعد إمكانية العثور على مواضع استخدام متغير في قائمة إصدارات في ملفات إنشاء أخرى، سواء كان ملف الإنشاء بتنسيق KTS أو Groovy. وهذا يعني أنّ استخدام Control+النقر (Command+النقر على نظام التشغيل macOS) على تعريف متغيّر في فهرس إصدار لا يؤدي إلى ملفات الإنشاء التي يتم فيها استخدام المتغيّر.

  • يعرض مربّع الحوار "بنية المشروع" في "استوديو Android" ملفات فهارس متعددة إذا كانت في المجلد الجذري gradle، ولكنّه لا يعرض فهارس لإصدار مجمّع. على سبيل المثال، إذا كان لديك ملفا كتالوج، أحدهما لتطبيقك والآخر لإصدار مجمّع، لن يعرض مربّع الحوار "بنية المشروع" سوى ملف كتالوج التطبيق. يمكنك استخدام إصدار مجمّع، ولكن عليك تعديل ملف TOML الخاص به مباشرةً.

إحصاءات إضافية عن حِزم تطوير البرامج (SDK): مشاكل السياسات

يعرض "استوديو Android" تحذيرات lint في الملفات build.gradle.kts وbuild.gradle، وفي مربّع حوار "بنية المشروع" لحِزم SDK العامة التي تتضمّن انتهاكات لسياسات Play في Google Play SDK Index. عليك تعديل أي تبعيات تنتهك سياسات Play لأنّ هذه الانتهاكات قد تمنعك من النشر على Google Play Console في المستقبل. تُكمّل التحذيرات بشأن انتهاك السياسة التحذيرات بشأن الإصدار القديم التي يعرضها "استوديو Android".

توافق إصدار compileSdk في "استوديو Android"

يعرض "استوديو Android" تحذيرًا إذا كان مشروعك يستخدم compileSdk غير متوافق مع الإصدار الحالي من "استوديو Android". إذا كان ذلك متاحًا، يقترح عليك أيضًا الانتقال إلى إصدار من "استوديو Android" يتوافق مع compileSdk الذي يستخدمه مشروعك. يُرجى العِلم أنّ ترقية "استوديو Android" قد تتطلّب أيضًا ترقية AGP. يعرض المكوّن الإضافي لنظام Gradle المتوافق مع Android أيضًا تحذيرًا في نافذة الأدوات إنشاء إذا كان compileSdk الذي يستخدمه مشروعك غير متوافق مع الإصدار الحالي من المكوّن الإضافي لنظام Gradle المتوافق مع Android.

تغييرات في سلوك أداة Lint

اعتبارًا من الإصدار 8.3.0-alpha02 من المكوّن الإضافي لنظام Gradle المتوافق مع Android، عند تشغيل أداة lint على أحد الوحدات، يتم تنفيذ مهام منفصلة لتحليل lint للمكوّنات الرئيسية والاختبارية للوحدة. والسبب في هذا التغيير هو تحسين الأداء. للرجوع إلى السلوك السابق، اضبط android.experimental.lint.analysisPerComponent=false في ملف gradle.properties.

تفعيل ميزة "تقليص الموارد بدقة" تلقائيًا

يتم تفعيل ميزة "تصغير الموارد بدقة" تلقائيًا، وهي تزيل الإدخالات غير المستخدَمة من ملف resources.arsc وتتخلص من ملفات الموارد غير المستخدَمة. عند تفعيل هذا التصغير، يتم تقليل حجم جدول الموارد ولا يتم تضمين سوى إدخالات المجلد res التي تمت الإشارة إليها في حزمة APK.

لإيقاف تقليص الموارد الدقيق، اضبط قيمة android.enableNewResourceShrinker.preciseShrinking على false في ملف gradle.properties الخاص بمشروعك.

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

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

المشاكل التي تم إصلاحها
المكوّن الإضافي لنظام Gradle المتوافق مع Android
يمكن أن يحدث توقّف تام عند تفعيل عملية إزالة التجميل اللغوي في الإصدار 8.3 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android"
تعطُّل مهمة zipApksFor في الإصدار 8.3 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
دمج Lint
تعذُّر على Lint إزالة الغموض عن تبعية KMP

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

المشاكل التي تم إصلاحها
المكوّن الإضافي لنظام Gradle المتوافق مع Android
مشكلة في معالجة المدخلات المتزايدة في MergeJavaResourcesTask
دمج Lint
لا يمكن لـ Lint حلّ أنواع مجموعات المصادر المتجاورة في الإصدار 8.3.0-rc02 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android"

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

المشاكل التي تم إصلاحها
المكوّن الإضافي لنظام Gradle المتوافق مع Android
ذاكرة التخزين المؤقت للإنشاء غير ضرورية لمهمة PackageForUnitTest
[الإصدار 8.1.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android] يتعذّر تنفيذ الأمر ‎./gradlew test ويظهر الخطأ "Unable to find manifest output" إذا كانت قيمة كلّ من splits.abi.isEnable وtestOptions.unitTests.isIncludeAndroidResources هي true
يتعذّر إنشاء نموذج "مكوّن Android الإضافي في Gradle" مع عمليات الإنشاء المضمّنة المتداخلة في Gradle
يؤدي برنامج تقليص الموارد إلى تشويه أرقام تعريف الموارد، ما يؤدي إلى حدوث أعطال أثناء التشغيل
لا يتم تنفيذ عملية التحقّق من الحدّ الأدنى لإصدار Gradle في الإصدار الثاني وما يليه.
تعذّر تنفيذ المهمة ‎:app:mergeReleaseClasses بعد تحديث المكوّن الإضافي لنظام Gradle المتوافق مع Android من الإصدار 8.0.2 إلى الإصدار 8.1.0
[Gradle 8.4][upgrade] تعذُّر اختبار التكامل بعد الترقية بسبب استخدام ميزة متوقّفة نهائيًا في المكوّن الإضافي لنظام Gradle المتوافق مع Kotlin
عدم التحقّق من توفّر ملفات تراكب البيان أثناء مرحلة الإعداد
رابط معطل إلى مستند Gradle بشأن الخطأ MergeJavaResWorkAction
الإصدار 8.1 من Gradle يتسبّب في إيقاف التخزين المؤقت للإعدادات بسبب ملف .gradle/.android/analytics.settings
يجب ألا يستخدم AGP السمة ProjectComponentIdentifier.projectPath بدون السمة ProjectComponentIdentifier.build
يُرجى تقليل/إزالة تسجيل المعلومات على مستوى المعلومات لـ AGP "Analytics other plugin to proto: ..."
[Gradle 8.4][upgrade] يؤدي تنفيذ عملية ملف أثناء الإعداد في ProcessJavaResTask إلى إيقاف التخزين المؤقت للإعداد
واجهة برمجة تطبيقات خيارات المنتج للحصول على جدول الرموز (R.txt)
لا يتعامل المكوّن الإضافي المستقل lint مع تبعية gradleApi() بشكل صحيح
توفُّر kDocs بشكل غير كافٍ في فئات/سمات AGP يشير `VariantOutput.enable` إلى أنّه يجب استبداله بـ `VariantOutput.enable`
يتعذّر على الإصدار 8.3.0-alpha02 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" تثبيت ملفات الإصدار على أجهزة Windows المضيفة
فرض استخدام `android.enableDexingArtifactTransform=true`
[Gradle 8.4][upgrade] تعذُّر اختبار التكامل بعد الترقية بسبب معالجة الملفات في مرحلة الإعداد
‫AGP 8.3.0-alpha-02 - `Error: Failed to deserialize cached resource repository.`
[Gradle 8.4][upgrade] تعذُّر اختبار التكامل بعد الترقية بسبب معالجة الملفات في مرحلة الإعداد في TestLabBuildService
يزيل الإصدار 8.1.0 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" تثبيت التطبيق بعد تشغيل الاختبارات المبرمَجة، بينما لا يفعل الإصدار 7.4.2 ذلك
يؤدي تحويل حزمة APK إلى حدوث خطأ في ListingFileRedirectTask
يؤدي تحويل عنصر ASSETS إلى تقديم مواقع جغرافية غير صالحة للإدخال/الإخراج
ترقية android.experimental.r8.dex-startup-optimization=true لتصبح الإعداد التلقائي
نقل البيانات إلى واجهة برمجة التطبيقات الجديدة لمزامنة إعدادات Gradle
يتعذّر تجميع الموارد عندما يحاول برنامج الترجمة البرمجية Kotlin التحديث إلى IDEA 21.3
Reactive get() with artifacts API
ترقية السمة "android.lint.printStackTrace" في "المكوّن الإضافي لنظام Gradle المتوافق مع Android" إلى إصدار ثابت
‫8.1.0 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android": ميزة ديناميكية: التبعية الضمنية بين exportReleaseConsumerProguardFiles وextractProguardFiles تؤدي إلى حدوث أخطاء في التجميع
يبدو أنّ `variant.unitTest.jniLibs.addGeneratedSourceDirectory` لا ينفّذ أي إجراء
تعديل محلّل XML المستخدَم في "المكوّن الإضافي لنظام Gradle المتوافق مع Android" ليتوافق مع الإصدار 8.4 من Gradle
لا يسري مفعول حزمة إصدار AGP 8.0.1 لأداة JaCoCo
HEDGEHOG REGRESSION: يتأخر ظهور زر التشغيل لبضع ثوانٍ (إنشاء مواصفات)
يُنتج الإصدار 8.3.0-alpha11 من المكوّن الإضافي لنظام Gradle المتوافق مع Android حِزمة APK للإصدار تتعطّل عند بدء التشغيل بسبب android.content.res.Resources$NotFoundException
ترقية السمة "android.lint.printStackTrace" في "المكوّن الإضافي لنظام Gradle المتوافق مع Android" إلى إصدار ثابت
طلب ميزة: الترويج لـ com.android.build.api.extension.impl.CURRENT_AGP_VERSION إلى واجهة برمجة تطبيقات عامة
يجب أن يتوقف SDK Manager عن إرسال معلومات السجلّ إلى stdout
تعذّر تنفيذ DexArchiveBuilderTaskDelegate بسبب وحدة مكتبة الموارد فقط
AGP7.4 custom plugin variant toTransform for all throw duplicate entry: META-INF/MANIFEST.MF exception
إتاحة علامات جديدة في ملف البيان
ينقل الرابط الخاص بـ "المشاريع المنفصلة" في إعدادات "استوديو Android" إلى مكان غير صحيح.
يُرجى تقديم خيارات لتضمين المصادر التي تم إنشاؤها في Javadoc وSourceJar
أحتاج إلى حلّ سريع للتناقض بين compileSdk والتبعيات التي تتضمّن minCompileSdkVersion
يجب أن تتيح أداة [Gradle] tools:overrideLibrary استخدام علامة النجمة (*)
تجميد واجهة المستخدم عند تعديل ملف البيان
يتعذّر ضبط إصدار JaCoCo في الإصدار 8.2.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
فشل مهمة تثبيت الإصدار 8.2.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android في مشروع يستخدم ميزات ديناميكية
فشل مهمة تثبيت الإصدار 8.2.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android في مشروع يستخدم ميزات ديناميكية
Dexer (D8)
[desugared library] الإصدار 2.1 من مكتبة desugared غير متوافق مع الإصدارات السابقة من R8
هل يتم تنفيذ عمليات التحسين حتى مع D8 فقط؟
Lint
[Lint] يتعطّل TranslucentViewDetector في الدالة filterIncident ويؤدي إلى أن ينتج Lint نتيجة خاطئة
يجب أن يقبل TranslucentViewDetector القيمة "behind"
تعذُّر عمل أداة Android Lint في مكتبة KMP بسبب ظهور الخطأ `property 'variantInputs.name' doesn't have a configured value.`
TranslucentViewDetector report wrong line in manifest
يُبلغ lintDebug بشكل خاطئ عن تحذيرات UseTomlInstead عند استخدام تبعيات المشروع
مشاكل غير متوقّعة من مشروع آخر تم الإبلاغ عنها باستخدام Android Lint
فحص LINT لرصد النتائج الموجبة الخاطئة للموارد غير المستخدَمة داخل أداة ربط ومتتبِّع النقرات
تعذّر تحميل ملف jar لعمليات التحقّق المخصّصة من أداة lint: لا يمكن تحويل العقدة إلى TreeNode
لم يتم استدعاء Lint visitAnnotationUsage لاستخدامات الفئات التي تمّت إضافة تعليقات توضيحية إليها في تعريفات المتغيّرات
يتعذّر تشغيل الإصدار 31.0.2 من أداة Lint بسبب ظهور الخطأ java.util.NoSuchElementException: الصفيف فارغ.
لا يظهر تحذير Lint بشأن kotlin.text.MatchNamedGroupCollection#get(String) الذي يتطلّب الإصدار 26 من واجهة برمجة التطبيقات
lint:TypographyQuotes false negatives: يتم تجاهل أكثر من علامة اقتباس مفردة تمت إزالة تنسيقها
موجب خاطئ في أداة رصد InvalidId في الإصدار 8.0.2 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android"
تمت إضافة مشاكل LintError إلى خطوط الأساس في Lint
لا يعمل Quickfix Lint ويؤدي إلى حدوث خطأ في بيئة التطوير المتكاملة
تعذّر الاختبار بشكل غير متسق بسبب التحليل الجزئي
تمييز غير صالح لتحذير هو إيجابي خاطئ
لم يتم استدعاء Lint visitAnnotationUsage لاستخدامات الفئات التي تمّت إضافة تعليقات توضيحية إليها في تعريفات المتغيّرات
قد تحذف أداة معالجة الموارد غير المستخدَمة ملف إنشاء Gradle
لا يفهم فحص NewApi lint الحقل النهائي "isAtleastU() && otherCondition()"
‫StackOverflow من `LintClient.getSdkHome`
لا يخبرك "استوديو Android" أو Lint عندما تكون التبعيات "الخاصة بالنظام الأساسي" قديمة
خطأ: لا يوجد اقتراح لتعديل تبعية Firebase-bom
لا يكتشف "بنية المشروع" (وGradle) تبعيات حزمة إدارة مواد Firebase التي يجب ترقيتها إلى إصدار أحدث.
دمج Lint
خطأ DuplicatePlatformClasses lint من تبعية testImplementation
Shrinker (R8)
لا يعمل R8 بعد الترقية من الإصدار 8.0.2 إلى الإصدار 8.1.0 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android"
‫isShrinkResources يبالغ في التحسين في الإصدارات من ‎8.3.0-alpha11 إلى ‎alpha14
تعطُّل حزمة تطوير البرامج (SDK) من Flurry بسبب R8 في الإصدار 8.2.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
‫Android - R8 يتسبّب في تعطُّل الفئة الفرعية من LinearLayoutManager
تعطُّل وقت التشغيل R8 v8.2.33 مع ظهور الخطأ "java.lang.VerifyError: Bad type on operand stack" بعد الترقية
‫[R8 8.3.21] حجم R8 8.3.21 أكبر من حجم R8 8.1.56 بمقدار 1.57 ميغابايت
‫[R8 8.3.21] حجم R8 8.3.21 أكبر من حجم R8 8.1.56 بمقدار 1.57 ميغابايت
تعرض class.getInterfaces() قيمة فارغة
تعذُّر اختبار SimpleKotlinEnumUnboxingTest على روبوت kotlin_dev