الإصدار 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.

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

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

Android Studio Iguana | تصحيح 2 للإصدار 2023.2.1 وAGP 8.3.2 (أبريل 2024)

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

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

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

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

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

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

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

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

الدمج مع مربّع الحوار "هيكل المشروع"

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

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

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

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

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

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

  • تمييز الأخطاء في تعريفات الأسماء البديلة للمكوّنات الإضافية في ملفات النصوص البرمجية Kotlin: عند إضافة تعريف مكوّن إضافي على شكل alias(libs.plugins.example)، يُضيف المحرّر خطًا تحتيًا باللون الأحمر أسفل الجزء libs. هذه مشكلة معروفة في Gradle الإصدار 8.0 والإصدارات الأقدم، وسيتم حلّها في إصدار مستقبلي من 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 Studio.

الإصدارات المتوافقة من compileSdk في "استوديو Android"

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

تغييرات في سلوك 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 وظهور الرسالة "تعذّر العثور على ناتج البيان" إذا كانت كل من القيمتَين splits.abi.isEnable وtestOptions.unitTests.isIncludeAndroidResources صحيحتَين
تعذُّر إنشاء نموذج AGP باستخدام عمليات دمج gradle المُدمجة
يؤدي "أداة تصغير الموارد" إلى تشويه أرقام تعريف الموارد، ما يؤدي إلى حدوث أعطال في وقت التشغيل
لا يتم تشغيل عملية التحقّق من الحد الأدنى لإصدار Gradle في عملية التصميم الثانية والإصدارات اللاحقة.
تعذّر تنفيذ المهمة ‎:app:mergeReleaseClasses بعد تحديث AGP من الإصدار 8.0.2 إلى الإصدار 8.1.0
[Gradle 8.4][upgrade] Integration test failure after upgrade due to use of deprecated feature in kotlin gradle plugin
عدم التحقّق من توفّر ملفات تراكب البيان أثناء مرحلة الضبط
رابط غير صالح لمستند Gradle بشأن خطأ MergeJavaResWorkAction
يؤدي الإصدار 8.1 من Gradle إلى إيقاف ميزة التخزين المؤقت للإعدادات بسبب ملف ‎ .gradle/.android/analytics.settings
يجب ألا يستخدم AGP ProjectComponentIdentifier.projectPath بدون ProjectComponentIdentifier.build
يُرجى تقليل/إزالة التسجيل على مستوى المعلومات لـ AGP "مكوّن إضافي آخر لخدمة "إحصاءات Google" إلى proto: ..."
[Gradle 8.4][upgrade] File operation during configuration in ProcessJavaResTask breaks config caching
Variant API للحصول على جدول الرموز (R.txt)
لا يعالج المكوّن الإضافي المستقل لـ lint تبعية gradleApi() بشكلٍ صحيح
محتوى kDocs ضعيف في فئات/خصائص AGP يشير العنصر VariantOutput.enable إلى أنّه يجب استبداله بـ VariantOutput.enable
لا يمكن لخدمة AGP 8.3.0-alpha02 تثبيت ملفات تعريف الإصدار على مضيفي Windows
فرض القيمة true على android.enableDexingArtifactTransform
[Gradle 8.4][upgrade] تعذّر اختبار الدمج بعد الترقية بسبب معالجة الملفات في مرحلة الإعداد
AGP 8.3.0-alpha-02 - `Error: Failed to deserialize cached resource repository.`
[Gradle 8.4][upgrade] Integration test failure after upgrade due file handling in configuration phase of TestLabBuildService
يؤدي الإصدار 8.1.0 من AGP إلى إلغاء تثبيت التطبيق بعد تشغيل الاختبارات المستندة إلى الأدوات، في حين لا يؤدي الإصدار 7.4.2 إلى ذلك.
يؤدي تحويل حزمة APK إلى حدوث خطأ في ListingFileRedirectTask
يؤدي تحويل عنصر ASSETS إلى ظهور مواقع إدخال/إخراج غير صالحة.
ترقية android.experimental.r8.dex-startup-optimization=true لتكون القيمة التلقائية
نقل البيانات إلى واجهة برمجة التطبيقات الجديدة لضبط إعدادات Gradle
تعذُّر تجميع الموارد عندما يحاول مُجمِّع Kotlin التحديث إلى IDEA 21.3
دالة get() التفاعلية مع واجهة برمجة التطبيقات artifacts
ترقية سمة AGP "android.lint.printStackTrace" إلى الإصدار الثابت
AGP 8.1.0: ميزة ديناميكية: يؤدي الاعتماد الضمني بين exportReleaseConsumerProguardFiles وextractProguardFiles إلى حدوث أخطاء في الترجمة
يبدو أنّ الإجراء variant.unitTest.jniLibs.addGeneratedSourceDirectory لا يؤدي إلى أيّ إجراء.
تعديل وحدة تحليل XML المستخدَمة في AGP لتوافقها مع Gradle 8.4
لا يتم تفعيل أداة jacoco في حزمة إصدار AGP 8.0.1
HEDGEHOG REGRESSION: Run button is delayed by a few seconds (Creating spec)
يُنشئ الإصدار AGP 8.3.0-alpha11 حزمة APK للإصدار العلني التي تتعطل عند بدء التشغيل بسبب android.content.res.Resources$NotFoundException
ترقية سمة AGP "android.lint.printStackTrace" إلى الإصدار الثابت
طلب ميزة: ترقية com.android.build.api.extension.impl.CURRENT_AGP_VERSION إلى واجهة برمجة تطبيقات عامة
من المفترض أن يوقف أداة SDK Manager إرسال معلومات السجلّ غير المرغوب فيها إلى stdout.
تعذّر DexArchiveBuilderTaskDelegate مع وحدة مكتبة تتضمّن موارد فقط
إصدار AGP7.4 من متغير المكوّن الإضافي المخصّص toTransform لجميع عمليات الطرح التي تؤدي إلى إدخال مكرّر: استثناء META-INF/MANIFEST.MF
إتاحة علامات البيان الجديدة
يؤدي الرابط المؤدي إلى "المشاريع غير المرتبطة" في إعدادات الاستوديو إلى الانتقال إلى مكان غير صحيح.
يُرجى تقديم خيارات لتضمين المصادر التي تم إنشاؤها في Javadoc وSourceJar.
نحتاج إلى حلّ سريع للتناقض بين compileSdk والتبعية مع minCompileSdkVersion
[Gradle] يجب أن تتيح أداة tools:overrideLibrary استخدام علامة النجمة (*)
تجميد واجهة المستخدم عند تعديل البيان
تعذّر ضبط إصدار JaCoCo في AGP 8.2.0
تعذُّر مهمة تثبيت الإصدار 8.2.0 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" في المشروع الذي يستخدم ميزات ديناميكية
تعذُّر مهمة تثبيت الإصدار 8.2.0 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" في المشروع الذي يستخدم ميزات ديناميكية
Dexer (D8)
[desugared library] الإصدار 2.1 من مكتبة desugared غير متوافق مع الإصدارات السابقة من R8
هل يتم إجراء التحسينات حتى مع استخدام D8 فقط؟
Lint
[Lint] TranslucentViewDetector crashes in filterIncident function and causes lint to produce wrong result
يجب أن يقبل TranslucentViewDetector قيمة "behind".
يتعذّر على أداة Android Lint فحص مكتبة KMP التي تحتوي على السمة "لا تحتوي السمة variantInputs.name على قيمة تم ضبطها".
TranslucentViewDetector report wrong line in manifest
يُبلغ lintDebug بشكل خاطئ عن تحذيرات UseTomlInstead عند استخدام تبعيات المشروع
مشاكل غير متوقّعة من مشروع آخر رصدتها أداة Android Lint
فحص LINT لرصد النتائج الموجبة الخاطئة للموارد غير المستخدَمة داخل عملية الربط ومستمع النقرات
تعذّر تحميل ملف jar الخاص بالفحص المخصّص للأخطاء النحوية: لا يمكن تحويل Node إلى TreeNode
لم يتم استدعاء Lint visitAnnotationUsage لاستخدامات الفئات التي تمت عليها تعليقات توضيحية في تعريفات المتغيّرات
يتعذّر تشغيل Lint 31.0.2 بسبب java.util.NoSuchElementException: الصفيف فارغ.
لا يتضمّن 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
تمّت إضافة مشاكل LintError إلى خطوط الأساس لفحص الأخطاء
لا يعمل Quickfix Lint ويؤدي إلى ظهور خطأ في IDE
تعذُّر الاختبار بشكل غير متّسق بسبب التحليل الجزئي
تمييز غير صالح لتحذير موجب خاطئ
لم يتم استدعاء Lint visitAnnotationUsage لاستخدامات الفئات التي تمت عليها تعليقات توضيحية في تعريفات المتغيّرات
قد يؤدي "معالج الموارد غير المستخدمة" إلى حذف ملف إنشاء Gradle
لا يفهم فحص NewApi lint الحقل النهائي "isAtleastU() && otherCondition()".
StackOverflow من `LintClient.getSdkHome`
لا يُعلمك "استوديو Android" أو Lint عندما تكون تبعيات "النظام الأساسي" قديمة.
خطأ: لا تتوفّر أي اقتراحات لتعديل الاعتمادية على Firebase-bom
لا يرصد Project Structure (وGradle؟) تبعيات ملف BOM في Firebase لتتم ترقيتها إلى إصدار أحدث.
دمج Lint
خطأ في أداة lint بسبب DuplicatePlatformClasses من التبعية testImplementation
Shrinker (R8)
لا يعمل R8 بعد الترقية من AGP 8.0.2 إلى 8.1.0
تُجري دالة isShrinkResources تحسينًا مفرطًا في الإصدارات من 8.3.0-alpha11 إلى alpha14
تعطُّل حزمة تطوير البرامج (SDK) Flurry R8 مع AGP 8.2.0
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 حلّ أنواع مجموعات المصادر الشقيقة في AGP 8.3.0-rc02

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

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