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

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

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

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

  • إعدادات تبعية جديدة لفحص الوبر: تم تغيير سلوك lintChecks وتم تقديم إعدادات تبعية جديدة، وهي "lintPublish"، لمنحك مزيدًا من التحكّم في عمليات فحص الوبر التي يتم تضمينها في مكتبات 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.

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

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

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

والآن باستخدام 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
              
            

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