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

يتطلّب هذا الإصدار ما يلي:

الإصدار الأدنى الإصدار التلقائي ملاحظات
Gradle 4.10.1 4.10.1 لمزيد من المعلومات، اطّلِع على تحديث Gradle. عند استخدام الإصدار 5.0 من Gradle والإصدارات الأحدث، ينخفض حجم الذاكرة المخصّصة لبرنامج Gradle الخفي التلقائي من 1 غيغابايت إلى 512 ميغابايت. وقد يؤدي ذلك إلى تراجع في أداء الإصدار. لإلغاء هذا الإعداد التلقائي، حدِّد حجم الذاكرة المخصّصة لبرنامج Gradle الخفي في ملف gradle.properties الخاص بمشروعك.
أدوات تصميم حزمة تطوير البرامج (SDK) ‫28.0.3 ‫28.0.3 تثبيت أو ضبط أدوات إنشاء حزمة تطوير البرامج (SDK).

‫3.3.3 (تموز/يوليو 2020)

يتوافق هذا التحديث الطفيف مع الإعدادات التلقائية والميزات الجديدة لإذن الوصول إلى الحِزم في Android 11.

يُرجى الاطّلاع على ملاحظات الإصدار 4.0.1 للحصول على التفاصيل.

‫3.3.2 (مارس 2019)

يتوافق هذا التحديث الطفيف مع الإصدار 3.3.2 من Android Studio ويتضمّن إصلاحات متنوعة للأخطاء وتحسينات في الأداء. للاطّلاع على قائمة بإصلاحات الأخطاء المهمة، يُرجى قراءة المشاركة ذات الصلة في مدونة "ملاحظات الإصدار".

‫3.3.1 (فبراير 2019)

يتوافق هذا التحديث الطفيف مع الإصدار 3.3.1 من Android Studio ويتضمّن إصلاحات متنوعة للأخطاء وتحسينات في الأداء.

الميزات الجديدة

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

    على سبيل المثال، إذا كان مسار فئة وقت التشغيل يتضمّن الإصدار 2.0 من المكتبة A، وكان مسار فئة وقت الترجمة يتضمّن الإصدار 1.0 من المكتبة A، سيعدّل المكوّن الإضافي تلقائيًا الاعتمادية في مسار فئة وقت الترجمة إلى الإصدار 2.0 من المكتبة A لتجنُّب حدوث أخطاء.

    ومع ذلك، إذا كان مسار فئة وقت التشغيل يتضمّن الإصدار 1.0 من المكتبة A، وكان الإصدار 2.0 من المكتبة A مضمّنًا في عملية التجميع، لن يخفّض المكوّن الإضافي مستوى الاعتمادية في مسار فئة التجميع إلى الإصدار 1.0 من المكتبة A، وسيظهر لك خطأ. لمزيد من المعلومات، راجِع مقالة حلّ التعارضات بين مسارات الفئات.

  • تحسين تجميع Java بشكل تدريجي عند استخدام معالِجات التعليقات التوضيحية: يقلّل هذا التحديث من مدّة التصميم من خلال تحسين إمكانية تجميع Java بشكل تدريجي عند استخدام معالِجات التعليقات التوضيحية.

    ملاحظة: تتوافق هذه الميزة مع الإصدار 4.10.1 من Gradle والإصدارات الأحدث، باستثناء الإصدار 5.1 من Gradle بسبب المشكلة 8194 في Gradle.

    • بالنسبة إلى المشاريع التي تستخدم Kapt (معظم المشاريع التي تستخدم Kotlin فقط والمشاريع المختلطة التي تستخدم Kotlin وJava): يتم تفعيل عملية تجميع Java التزايدي، حتى عند استخدام ربط البيانات أو المكوّن الإضافي retro-lambda. لا تتم معالجة التعليقات التوضيحية بشكل تدريجي من خلال مهمة Kapt حتى الآن.

    • بالنسبة إلى المشاريع التي لا تستخدم Kapt (المشاريع التي تستخدم Java فقط): إذا كانت جميع معالِجات التعليقات التوضيحية التي تستخدمها تتوافق مع المعالجة التزايدية للتعليقات التوضيحية، سيتم تفعيل تجميع Java التزايدي تلقائيًا. لمراقبة معدّل استخدام معالج التعليقات التوضيحية التدريجي، راجِع المشكلة 5277 في Gradle.

      ومع ذلك، إذا كان أحد معالِجات التعليقات التوضيحية أو أكثر لا يتيح إنشاء إصدارات متزايدة، لن يتم تفعيل تجميع Java المتزايد. بدلاً من ذلك، يمكنك تضمين العلامة التالية في ملف gradle.properties:

      android.enableSeparateAnnotationProcessing=true
                  

      عند تضمين هذا العلامة، ينفّذ المكوّن الإضافي لنظام Gradle المتوافق مع Android معالجات التعليقات التوضيحية في مهمة منفصلة ويسمح بتنفيذ مهمة تجميع Java بشكل تدريجي.

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

              android.debug.obsoleteApi=true
            

    يمكنك أيضًا تفعيل العلامة من خلال تمرير -Pandroid.debug.obsoleteApi=true من سطر الأوامر.

  • يمكنك إجراء اختبارات الأدوات على وحدات الميزات من سطر الأوامر.

تغييرات السلوك

  • إعداد المهام عند الحاجة: يستخدم المكوّن الإضافي الآن واجهة برمجة التطبيقات الجديدة لإنشاء المهام في Gradle لتجنُّب تهيئة المهام وإعدادها إذا لم تكن مطلوبة لإكمال عملية الإنشاء الحالية (أو المهام غير المدرَجة في الرسم البياني لمهام التنفيذ). على سبيل المثال، إذا كان لديك عدة تصاميم متنوعة، مثل تصاميم "الإصدار" و"تصحيح الأخطاء"، وكنت بصدد إنشاء إصدار "تصحيح الأخطاء" من تطبيقك، تتجنّب الإضافة تهيئة المهام وضبطها لإصدار "الإصدار" من تطبيقك.

    قد يؤدي استدعاء بعض الطرق القديمة في واجهة برمجة التطبيقات Variants API، مثل variant.getJavaCompile()، إلى فرض إعدادات المهام. للتأكّد من أنّ الإصدار محسّن لإعداد المهام المؤجَّلة، استخدِم طرقًا جديدة تعرض بدلاً من ذلك عنصر TaskProvider، مثل variant.getJavaCompileProvider().

    إذا كنت تنفّذ مهام تصميم مخصّصة، تعرَّف على كيفية التكيّف مع واجهة برمجة التطبيقات الجديدة لإنشاء المهام في Gradle.

  • بالنسبة إلى نوع تصميم معيّن، عند ضبط useProguard false، يستخدم المكوّن الإضافي الآن أداة R8 بدلاً من ProGuard لتقليل حجم الرموز والموارد وتشويشها. لمزيد من المعلومات حول R8، يمكنك الاطّلاع على مشاركة المدونة هذه من مدونة مطوّري تطبيقات Android.

  • إنشاء أسرع لفئة R لمشاريع المكتبات: في السابق، كان المكوّن الإضافي لنظام Gradle المتوافق مع Android ينشئ ملف R.java لكل التبعيات في مشروعك، ثم يجمّع فئات R هذه مع فئات تطبيقك الأخرى. تنشئ الإضافة الآن ملف JAR يحتوي على فئة R المجمَّعة لتطبيقك مباشرةً، بدون إنشاء فئات R.java وسيطة أولاً. قد يؤدي هذا التحسين إلى تحسين أداء الإصدار بشكل كبير للمشاريع التي تتضمّن العديد من المشاريع الفرعية والتبعيات للمكتبات، كما يؤدي إلى تحسين سرعة الفهرسة في "استوديو Android".

  • عند إنشاء مجموعة حزمات تطبيق Android، تتضمّن حِزم APK التي يتم إنشاؤها من حِزمة التطبيق هذه والتي تستهدف الإصدار 6.0 من نظام التشغيل Android (مستوى واجهة برمجة التطبيقات 23) أو الإصدارات الأحدث تلقائيًا إصدارات غير مضغوطة من المكتبات الأصلية. يمنع هذا التحسين الجهاز من إنشاء نسخة من المكتبة، وبالتالي يقلّل حجم تطبيقك على القرص. وإذا كنت تفضّل إيقاف هذا التحسين، أضِف ما يلي إلى ملف gradle.properties:

    android.bundle.enableUncompressedNativeLibs = false
            
  • تفرض الإضافة الحد الأدنى من إصدارات بعض الإضافات التابعة لجهات خارجية.

  • مزامنة مشروع ذي إصدار متغير واحد: تُعد مزامنة مشروعك مع إعدادات التصميم خطوة مهمة في السماح لـ "استوديو Android" بفهم كيفية تنظيم مشروعك. ومع ذلك، يمكن أن تستغرق هذه العملية وقتًا طويلاً في المشاريع الكبيرة. إذا كان مشروعك يستخدم عدة صيغ إنشاء، يمكنك الآن تحسين عمليات المزامنة للمشروع من خلال حصرها على الصيغة التي اخترتها حاليًا فقط.

    يجب استخدام الإصدار 3.3 أو إصدار أحدث من "استوديو Android" مع الإصدار 3.3.0 أو إصدار أحدث من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" لتفعيل هذا التحسين. عند استيفاء هذه المتطلبات، سيطلب منك بيئة التطوير المتكاملة تفعيل هذا التحسين عند مزامنة مشروعك. ويتم أيضًا تفعيل التحسين تلقائيًا في المشاريع الجديدة.

    لتفعيل هذا التحسين يدويًا، انقر على ملف (File) > إعدادات (Settings) > تجريبي (Experimental) > Gradle (استوديو Android > الإعدادات المفضّلة (Preferences) > تجريبي (Experimental) > Gradle على جهاز Mac) وضَع علامة في مربّع الاختيار مزامنة المتغير النشط فقط (Only sync the active variant).

    ملاحظة: تتوافق عملية التحسين هذه تمامًا مع المشاريع التي تتضمّن لغتَي Java وC++‎، وتتوافق جزئيًا مع Kotlin. عند تفعيل التحسين للمشاريع التي تتضمّن محتوى Kotlin، يعود خيار المزامنة في Gradle إلى استخدام صيغ كاملة داخليًا.

  • التنزيل التلقائي لحِزم SDK الناقصة: تم توسيع نطاق هذه الوظيفة لتشمل NDK. لمزيد من المعلومات، يمكنك الاطّلاع على مقالة التنزيل التلقائي للحِزم الناقصة باستخدام Gradle.

تم إصلاح الأخطاء

  • يعمل الإصدار 3.3.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android على إصلاح المشاكل التالية:

    • تستدعي عملية التصميم android.support.v8.renderscript.RenderScript بدلاً من إصدار AndroidX، على الرغم من تفعيل Jetifier
    • تعارضات بسبب تضمين androidx-rs.jar في حزمة ثابتة annotation.AnyRes
    • عند استخدام RenderScript، لن تحتاج بعد الآن إلى ضبط إصدار "أدوات الإنشاء" يدويًا في ملفات build.gradle