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

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

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

‫3.4.3 (يوليو 2020)

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

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

‫3.4.2 (تموز/يوليو 2019)

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

3.4.1 (أيار/مايو 2019)

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

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

  • إعدادات جديدة لعمليات التحقّق من أداة Lint تعتمد على التبعيات: تم تغيير سلوك lintChecks، وتم تقديم إعداد جديد للتبعية، وهو lintPublish، لمنحك المزيد من التحكّم في عمليات التحقّق من أداة Lint التي يتم تضمينها في مكتبات Android.

    • lintChecks: هذا إعداد حالي يجب استخدامه لعمليات فحص lint التي تريد تنفيذها فقط عند إنشاء مشروعك محليًا. إذا كنت تستخدم سابقًا إعدادات التبعية lintChecks لتضمين عمليات التحقّق من lint في ملف AAR المنشور، عليك نقل هذه التبعيات لاستخدام إعدادات lintPublish الجديدة الموضّحة أدناه بدلاً من ذلك.
    • lintPublish: استخدِم هذا الإعداد الجديد في مشاريع المكتبة لعمليات فحص Lint التي تريد تضمينها في ملف AAR المنشور، كما هو موضّح أدناه. وهذا يعني أنّ المشاريع التي تستخدم مكتبتك تطبّق أيضًا عمليات فحص lint هذه.

    يستخدم نموذج الرمز البرمجي التالي كلا إعدادَي التبعية في مشروع مكتبة Android محلية.

    dependencies {
      // Executes lint checks from the ':lint' project at build time.
      lintChecks project(':lint')
      // Packages lint checks from the ':lintpublish' in the published AAR.
      lintPublish project(':lintpublish')
    }
            
    dependencies {
      // Executes lint checks from the ':lint' project at build time.
      lintChecks(project(":lint"))
      // Packages lint checks from the ':lintpublish' in the published AAR.
      lintPublish(project(":lintpublish"))
        }
            
    • بشكل عام، من المفترض أن تشهد مهام التغليف والتوقيع تحسّنًا عامًا في سرعة الإنشاء. إذا لاحظت انخفاضًا في الأداء مرتبطًا بهذه المهام، يُرجى الإبلاغ عن خطأ.

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

  • تحذير بشأن إيقاف المكوّن الإضافي لميزة "التطبيقات الفورية على Android": إذا كنت لا تزال تستخدم المكوّن الإضافي com.android.feature لإنشاء تطبيقك الفوري، سيصدر لك الإصدار 3.4.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android تحذيرًا بشأن إيقاف المكوّن الإضافي. لضمان إمكانية إنشاء تطبيقك الفوري على الإصدارات المستقبلية من المكوّن الإضافي، عليك نقل تطبيقك الفوري إلى استخدام المكوّن الإضافي للميزات الديناميكية، والذي يتيح لك أيضًا نشر كلّ من تجارب التطبيق المثبَّت والتطبيق الفوري من حِزمة تطبيق Android واحدة.

  • تفعيل R8 تلقائيًا: يدمج R8 عملية إزالة التكرار، والتصغير، والتشويش، والتحسين، والتحويل إلى رمز DEX في خطوة واحدة، ما يؤدي إلى تحسينات ملحوظة في أداء عملية الإنشاء. تم طرح R8 في الإصدار 3.3.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android، وهو مفعّل الآن تلقائيًا لكل من مشاريع التطبيقات ومكتبات Android التي تستخدم الإصدار 3.4.0 من المكوّن الإضافي والإصدارات الأحدث.

تقدّم الصورة أدناه نظرة عامة شاملة على عملية التجميع قبل طرح R8.

قبل R8، كانت عملية تجميع ProGuard خطوة تجميع مختلفة عن عملية تحويل الرمز إلى DEX وعملية إزالة السكر.

أما الآن، فباستخدام R8، يتم إكمال جميع عمليات إزالة التوافق مع الإصدارات القديمة والتصغير والتشويش والتحسين والتحويل إلى رمز DEX (باستخدام D8) في خطوة واحدة، كما هو موضّح أدناه.

باستخدام R8، يتم تنفيذ عمليات إزالة التوافق مع الإصدارات القديمة والتصغير والتشويش والتحسين والتحويل إلى رمز DEX في خطوة تجميع واحدة.

يُرجى العِلم أنّ R8 مصمَّم للعمل مع قواعد ProGuard الحالية، لذا من المحتمل ألا تحتاج إلى اتّخاذ أي إجراءات للاستفادة من R8. ومع ذلك، بما أنّها تقنية مختلفة عن ProGuard ومصمَّمة خصيصًا لمشاريع Android، قد يؤدي التصغير والتحسين إلى إزالة الرمز الذي قد لا يزيله ProGuard. لذا، في هذه الحالة غير المحتملة، قد تحتاج إلى إضافة قواعد إضافية للحفاظ على هذا الرمز في ناتج الإصدار.

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

      # Disables R8 for Android Library modules only.
      android.enableR8.libraries = false
      # Disables R8 for all modules.
      android.enableR8 = false
      
    

ملاحظة: بالنسبة إلى نوع إصدار معيّن، إذا ضبطت useProguard على false في ملف build.gradle لوحدة تطبيقك، سيستخدم المكوّن الإضافي لنظام Gradle المتوافق مع Android أداة R8 لتقليل حجم رمز تطبيقك لنوع الإصدار هذا، بغض النظر عمّا إذا كنت قد أوقفت R8 في ملف gradle.properties الخاص بمشروعك.

  • تم إيقاف ndkCompile نهائيًا: سيظهر لك الآن خطأ في الإصدار إذا حاولت استخدام ndkBuild لتجميع المكتبات المجمّعة من رموز برمجية أصلية. بدلاً من ذلك، عليك استخدام CMake أو ndk-build من أجل إضافة رمز C وC++ إلى مشروعك.

المشاكل المعروفة

  • لا يتم حاليًا فرض الاستخدام الصحيح لأسماء الحِزم الفريدة، ولكن سيتم تطبيق قيود أكثر صرامة في الإصدارات اللاحقة من المكوّن الإضافي. في الإصدار 3.4.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android، يمكنك الموافقة على التحقّق مما إذا كان مشروعك يعرّف أسماء حِزم مقبولة عن طريق إضافة السطر أدناه إلى ملف gradle.properties.

              android.uniquePackageNames = true
              
            

    لمزيد من المعلومات حول ضبط اسم الحزمة من خلال المكوّن الإضافي لنظام Gradle المتوافق مع Android، يُرجى الاطّلاع على ضبط معرّف التطبيق.