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

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

التوافق

الحدّ الأقصى لمستوى واجهة برمجة التطبيقات الذي يتوافق معه الإصدار 8.3 من "مكوّن Android الإضافي في Gradle" هو المستوى 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.

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

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

‫Android Studio Iguana | الإصدار 2 من التصحيح 2023.2.1 و8.3.2 من "مكوّن Android الإضافي لبرنامج Gradle" (أبريل 2024)

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

‫Android Studio Iguana | الإصدار 2023.2.1 التصحيحي 1 وAGP 8.3.1 (مارس 2024)

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

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

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

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

يوفّر Android Studio ميزة إكمال الرمز البرمجي عند تعديل قائمة إصدارات بتنسيق ملف 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. هذه مشكلة معروفة في إصدارات Gradle 8.0 والإصدارات الأقدم، وسيتم حلّها في إصدار مستقبلي من Gradle.

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

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

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

  • وظيفة "العثور على مواضع الاستخدام" غير متاحة: لا تتوفّر بعد إمكانية العثور على مواضع استخدام متغير في قائمة إصدارات في ملفات إنشاء أخرى، سواء كان ملف الإنشاء بتنسيق KTS أو Groovy. أي أنّ استخدام Control+click (Command+click على نظام التشغيل 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" قد تتطلّب أيضًا ترقية "مكوّن Android الإضافي لبرنامج Gradle". يعرض AGP أيضًا تحذيرًا في نافذة أداة إنشاء إذا كان compileSdk الذي يستخدمه مشروعك غير متوافق مع الإصدار الحالي من AGP.

تغييرات سلوك 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.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android

المشاكل التي تم إصلاحها
المكوّن الإضافي لنظام Gradle المتوافق مع Android
ذاكرة التخزين المؤقت للإنشاء غير ضرورية لمهمة PackageForUnitTest
[AGP 8.1.0] يتعذّر تنفيذ الأمر ‎./gradlew test ويظهر الخطأ "Unable to find manifest output" إذا كانت قيمة كلّ من splits.abi.isEnable وtestOptions.unitTests.isIncludeAndroidResources هي true
تعذُّر إنشاء نموذج AGP باستخدام إصدارات Gradle المدمجة المتداخلة
يؤدي تقليص الموارد إلى تشويه أرقام تعريف الموارد، ما يؤدي إلى حدوث أعطال أثناء وقت التشغيل
لا يتم إجراء عملية التحقّق من الحدّ الأدنى لإصدار Gradle في الإصدار الثاني وما يليه.
فشل التنفيذ للمهمة ‎:app:mergeReleaseClasses بعد تحديث "مكوّن Android الإضافي Gradle" من الإصدار 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 من "مكوّن Android الإضافي لبرنامج Gradle" تثبيت ملفات الإصدار على أجهزة 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 من "مكوّن Android الإضافي لبرنامج Gradle" تثبيت التطبيق بعد تشغيل الاختبارات المزوّدة بأدوات، بينما لا يفعل الإصدار 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" في "مكوّن Android الإضافي لنظام Gradle" إلى إصدار ثابت
‫AGP 8.1.0: ميزة ديناميكية: التبعية الضمنية بين exportReleaseConsumerProguardFiles وextractProguardFiles تؤدي إلى حدوث أخطاء في التجميع
يبدو أنّ `variant.unitTest.jniLibs.addGeneratedSourceDirectory` لا ينفّذ أي إجراء
تعديل محلّل XML المستخدَم في "مكوّن Android الإضافي لبرنامج Gradle" ليتوافق مع الإصدار 8.4 من Gradle
لا يسري مفعول أداة Jacoco في حزمة الإصدار 8.0.1 من "مكوّن Android الإضافي في Gradle"
HEDGEHOG REGRESSION: يتأخر زر التشغيل لبضع ثوانٍ (إنشاء مواصفات)
يُنتج الإصدار 8.3.0-alpha11 من "مكوّن Android Gradle الإضافي" حِزمة APK للإصدار تتعطّل عند بدء التشغيل بسبب android.content.res.Resources$NotFoundException
ترقية السمة "android.lint.printStackTrace" في "مكوّن Android الإضافي لنظام Gradle" إلى إصدار ثابت
طلب ميزة: الترويج لـ 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
إتاحة علامات Manifest الجديدة
ينقل الرابط الخاص بـ "المشاريع المنفصلة" في إعدادات "استوديو Android" إلى مكان غير صحيح.
يُرجى تقديم خيارات لتضمين المصادر التي تم إنشاؤها في Javadoc وSourceJar
الحاجة إلى حلّ سريع للتناقض بين compileSdk والتبعيات التي تتضمّن minCompileSdkVersion
يجب أن تتيح أداة [Gradle] tools:overrideLibrary استخدام علامة النجمة (*)
تجميد واجهة المستخدم عند تعديل ملف البيان
يتعذّر ضبط إصدار JaCoCo في الإصدار 8.2.0 من "مكوّن Android الإضافي في Gradle"
تعذُّر تنفيذ مهمة تثبيت الإصدار 8.2.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android في مشروع يستخدم ميزات ديناميكية
تعذُّر تنفيذ مهمة تثبيت الإصدار 8.2.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android في مشروع يستخدم ميزات ديناميكية
Dexer (D8)
[desugared library] الإصدار 2.1 من desugared library غير متوافق مع الإصدارات السابقة من 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 check Unused Resource false positive detection inside of binding and click listener
تعذّر تحميل ملف jar لعملية التحقّق المخصّصة من أداة lint: لا يمكن تحويل العقدة إلى TreeNode
لم يتم استدعاء Lint visitAnnotationUsage لاستخدامات الفئات التي تمّت إضافة تعليقات توضيحية إليها في تعريفات المتغيّرات
يتعذّر تشغيل الإصدار 31.0.2 من أداة Lint ويظهر الخطأ java.util.NoSuchElementException: Array is empty.
عدم ظهور تحذير من أداة Lint بشأن kotlin.text.MatchNamedGroupCollection#get(String) الذي يتطلّب الإصدار 26 من واجهة برمجة التطبيقات
lint:TypographyQuotes false negatives: more than one escaped apostrophe are ignored
AGP 8.0.2 lint InvalidId detector false positive
تمت إضافة مشاكل LintError إلى خطوط الأساس في Lint
لا يعمل Quickfix Lint ويؤدي إلى حدوث خطأ في بيئة التطوير المتكاملة
تعذُّر إجراء الاختبار بشكل غير متسق بسبب التحليل الجزئي
تمييز غير صالح لتحذير إيجابي خاطئ
لم يتم استدعاء Lint visitAnnotationUsage لاستخدامات الفئات التي تمّت إضافة تعليقات توضيحية إليها في تعريفات المتغيّرات
قد تحذف أداة معالجة الموارد غير المستخدَمة ملف إنشاء Gradle
لا يفهم فحص NewApi lint الحقل النهائي "isAtleastU() && otherCondition()"
‫StackOverflow من `LintClient.getSdkHome`
لا يخبرك Android Studio / Lint عندما تكون تبعيات "النظام الأساسي" قديمة
خطأ: لا يوجد اقتراح لتعديل تبعية Firebase-bom
لا يكتشف "بنية المشروع" (وGradle) تبعيات حزمة إدارة المواد (BOM) في Firebase التي يجب ترقيتها إلى إصدار أحدث.
دمج Lint
خطأ DuplicatePlatformClasses lint من تبعية testImplementation
Shrinker (R8)
لا يعمل R8 بعد الترقية من الإصدار 8.0.2 إلى الإصدار 8.1.0 من "مكوّن Android الإضافي في Gradle"
تعمل أداة isShrinkResources على تحسين الأداء بشكل مفرط في الإصدارات من ‎8.3.0-alpha11 إلى alpha14
تعطُّل حزمة تطوير البرامج (SDK) من Flurry في الإصدار 8.2.0 من "مكوّن Android الإضافي في Gradle"
‫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

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

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

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

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