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