الإصدار 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). |
يتيح هذا التحديث الطفيف التوافق مع الإعدادات التلقائية والميزات الجديدة لإمكانية الوصول إلى الحِزم في 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، يتم إكمال جميع عمليات إزالة التجميل اللغوي والتصغير والتشويش والتحسين والتحويل إلى رمز DEX (باستخدام D8) في خطوة واحدة، كما هو موضّح أدناه.

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