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