الإصدار 3.4.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android (أبريل 2019)
يتطلّب هذا الإصدار ما يلي:
| الإصدار الأدنى | الإصدار التلقائي | الملاحظات | |
|---|---|---|---|
| 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). |
يتيح هذا التحديث الطفيف التوافق مع الإعدادات التلقائية والميزات الجديدة لإمكانية الوصول إلى الحِزم في Android 11.
يُرجى الاطّلاع على ملاحظات الإصدار 4.0.1 للحصول على التفاصيل.
3.4.2 (تموز/يوليو 2019)
يتوافق هذا التحديث الطفيف مع الإصدار 3.4.2 من Android Studio ويتضمّن إصلاحات متنوعة للأخطاء وتحسينات في الأداء. للاطّلاع على قائمة بإصلاحات الأخطاء الجديرة بالملاحظة، يُرجى قراءة المشاركة ذات الصلة في مدونة "ملاحظات الإصدار".
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، يُرجى الاطّلاع على ضبط معرّف التطبيق.