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

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

الحد الأدنى للإصدار الإصدار التلقائي ملاحظات
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: هذه ميزة حالية يجب استخدامها لفحوصات الأخطاء النحوية التي تريد تنفيذها فقط عند إنشاء مشروعك على الجهاز. إذا كنت تستخدم في السابق إعدادات تبعية lintChecks لتضمين عمليات فحص lint في حزمة AAR المنشورة، عليك نقل هذه التبعيات واستخدام إعدادات lintPublish الجديدة بدلاً من ذلك الموضّحة أدناه.
    • lintPublish: استخدِم هذا الإعداد الجديد في مشاريع مكتبة للتحقّق من الأخطاء النحوية التي تريد تضمينها في حزمة AAR المنشورة، كما هو موضّح أدناه. وهذا يعني أنّ المشروعات التي تستخدِم مكتبتك تطبِّق أيضًا عمليات التحقّق من الأخطاء النحوية هذه.

    يستخدم نموذج الرمز البرمجي التالي كلّ من إعدادات التبعيات في مشروع مكتبة 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 إزالة الترميز المُبسّط، والتصغير، والتشويه، والتحسين، وإزالة الترميز، وكل ذلك في خطوة واحدة، ما يؤدي بدوره إلى تحسينات ملحوظة في أداء عملية الإنشاء. تم طرح R8 في الإصدار 3.3.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android، وهو مفعّل الآن تلقائيًا لكلٍّ من مشاريع التطبيقات ومكتبات Android باستخدام الإصدار 3.4.0 من المكوّن الإضافي والإصدارات الأحدث.

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

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

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

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

يُرجى العِلم أنّ أداة 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، اطّلِع على ضبط رقم تعريف التطبيق.