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

يتطلّب هذا الإصدار من المكوّن الإضافي لنظام Android ما يلي:

الحد الأدنى للإصدار الإصدار التلقائي ملاحظات
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"، ويتضمّن إصلاحات مختلفة للأخطاء وتحسينات في الأداء. للاطّلاع على قائمة بالإصلاحات البارزة للأعطال، يُرجى قراءة المشاركة ذات الصلة على مدونة تحديثات الإصدارات.

3.3.1 (شباط/فبراير 2019)

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

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

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

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

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

  • تحسين عملية تجميع Java المتزايدة عند استخدام معالجات التعليقات التوضيحية: يقلل هذا التعديل من وقت الإنشاء من خلال تحسين التوافق مع عملية تجميع Java المتزايدة عند استخدام معالجات التعليقات التوضيحية.

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

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

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

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

      android.enableSeparateAnnotationProcessing=true
                  

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

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

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

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

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

    لتفعيل هذا التحسين يدويًا، انقر على ملف > الإعدادات > ميزات تجريبية > Gradle (Android Studio > الإعدادات المفضّلة > ميزات تجريبية > Gradle على جهاز Mac) وضَع علامة في مربّع الاختيار مزامنة الصيغة النشطة فقط.

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

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

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

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

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