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

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

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