الإصدار 3.1.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android (مارس 2018)
يتطلّب هذا الإصدار من المكوّن الإضافي المتوافق مع Android ما يلي:
| الإصدار الأدنى | الإصدار التلقائي | ملاحظات | |
|---|---|---|---|
| Gradle | 4.4 | 4.4 | لمزيد من المعلومات، اطّلِع على تحديث Gradle. |
| أدوات تصميم حزمة تطوير البرامج (SDK) | 27.0.3 | 27.0.3 | تثبيت أو ضبط أدوات إنشاء حزمة تطوير البرامج (SDK). يُرجى العِلم أنّه لم يعُد عليك تحديد إصدار لأدوات الإنشاء باستخدام السمة android.buildToolsVersion، إذ يستخدم المكوّن الإضافي الإصدار الأدنى المطلوب تلقائيًا. |
مُجمِّع DEX الجديد، D8
يستخدم استوديو Android الآن تلقائيًا مُجمِّع DEX جديدًا يُسمّى D8. تجميع DEX
هو عملية تحويل رمز البايت .class إلى
رمز البايت .dex لوقت تشغيل Android (أو Dalvik، للإصدارات القديمة
من Android). مقارنةً بالمُجمِّع السابق، الذي يُسمّى DX، يجمّع D8
بشكل أسرع وينتج ملفات DEX أصغر، مع الحفاظ على أداء وقت تشغيل التطبيق نفسه أو
تحسينه.
من المفترض ألا يغيّر D8 سير عمل تطوير التطبيق اليومي. ومع ذلك، إذا واجهت أي مشاكل متعلقة بالمُجمِّع الجديد، يُرجى الإبلاغ عن خطأ. يمكنك إيقاف D8 مؤقتًا
تعطيل D8 واستخدام DX من خلال تضمين ما يلي في ملف مشروعك
gradle.properties:
android.enableD8=false
بالنسبة إلى المشاريع التي
تستخدم ميزات لغة Java 8،
يتم تفعيل عملية إزالة السكر التزايدية تلقائيًا. يمكنك إيقافها من خلال
تحديد ما يلي في ملف gradle.properties الخاص بمشروعك:
android.enableIncrementalDesugaring=false.
مستخدمو الإصدارات التجريبية: إذا كنت تستخدم حاليًا إصدارًا تجريبيًا من D8، يُرجى العِلم أنّه يجمّع الآن المكتبات المضمّنة في أدوات تصميم حزمة تطوير البرامج (SDK)، وليس JDK. لذا، إذا كنت تصل إلى واجهات برمجة تطبيقات متوفّرة في JDK ولكن غير متوفّرة في مكتبات أدوات تصميم حزمة تطوير البرامج (SDK) ، سيظهر لك خطأ في التجميع.
التغييرات في السلوك
-
عند إنشاء ملفات APK متعدّدة يستهدف كل منها واجهة تطبيق ثنائية (ABI) مختلفة، لم يعُد المكوّن الإضافي ينشئ ملفات APK لواجهات التطبيق الثنائية التالية تلقائيًا:
mipsوmips64وarmeabi.إذا أردت إنشاء ملفات APK تستهدف واجهات التطبيق الثنائية هذه، عليك استخدام NDK r16b أو إصدار أقدم و تحديد واجهات التطبيق الثنائية في ملف
build.gradle، كما هو موضّح أدناه:splits { abi { include 'armeabi', 'mips', 'mips64' ... } }
splits { abi { include("armeabi", "mips", "mips64") ... } }
-
يزيل الآن مخزن مؤقت للإنشاء build cache في المكوّن الإضافي لنظام Android إدخالات المخزن المؤقت التي مرّ عليها أكثر من 30 يومًا.
-
لم يعُد تمرير
"auto"إلىresConfigيختار تلقائيًا موارد السلاسل لتضمينها في ملف APK. إذا واصلت استخدام"auto", يضمّن المكوّن الإضافي جميع موارد السلاسل التي يوفّرها تطبيقك والتبعيات التابعة له. لذا، عليك بدلاً من ذلك تحديد كل لغة تريد أن يضمّنها المكوّن الإضافي في ملف APK. -
بما أنّه لا يمكن أن تعتمد الوحدات المحلية على ملف APK الخاص باختبار تطبيقك، فإنّ إضافة تبعيات إلى اختباراتك التي تم تفعيلها باستخدام إعداد
androidTestApiبدلاً منandroidTestImplementationيؤدي إلى ظهور التحذير التالي في Gradle:WARNING: Configuration 'androidTestApi' is obsolete and has been replaced with 'androidTestImplementation'
WARNING: Configuration 'androidTestApi' is obsolete and has been replaced with 'androidTestImplementation'
الإصلاحات
- تم إصلاح مشكلة عدم تعرّف استوديو Android بشكلٍ صحيح على التبعيات في عمليات الإنشاء المركّبة.
- تم إصلاح مشكلة ظهور خطأ في مزامنة المشروع عند تحميل المكوّن الإضافي المتوافق مع Android عدة مرات في عملية إنشاء واحدة، مثلاً عندما يتضمّن كل مشروع فرعي المكوّن الإضافي المتوافق مع Android في مسار فئة buildscript.