الإصدار 7.1.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android (يناير 2022)
الإصدار 7.1.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android هو إصدار رئيسي يتضمّن مجموعة متنوّعة من الميزات والتحسينات الجديدة.
7.1.3 (أبريل 2022)
يتضمّن هذا التحديث البسيط إصلاحات الأخطاء التالية:
- مشاكل الصفوف المكرّرة التي أبلغ عنها R8
للاطّلاع على قائمة كاملة بإصلاحات الأخطاء المضمّنة في هذا الإصدار، راجِع منشور المدونة حول الإصدار 3 من حزمة تصحيح Android Studio Bumblebee.
7.1.2 (فبراير 2022)
يتضمّن هذا التحديث البسيط إصلاحات الأخطاء التالية:
- تعذُّر تنفيذ عملية تحويل رمز بايت ASM في الإصدار 7.1.0-rc01 من المكوّن الإضافي لنظام Gradle المتوافق مع Android أثناء اختبارات الوحدة
- تعذُّر مزامنة Gradle مع ظهور رسالة الخطأ "تعذّر تحميل الفئة 'com.android.build.api.extension.AndroidComponentsExtension'"
- لا يمكن استخدام بعض أقسام DSL الجديدة من Groovy DSL في الإصدار 7.0.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android.
- واجهة برمجة تطبيقات النشر الجديدة في الإصدار 7.1 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android": لا يتم توقيع ملف jar الخاص بـ javadoc
- يجب أن تستخدم ClassesDataSourceCache أحدث إصدار من Asm
- لا ينشر Android Studio BumbleBee دائمًا آخر التغييرات
للاطّلاع على قائمة كاملة بإصلاحات الأخطاء المضمّنة في هذا الإصدار، راجِع منشور المدونة حول الإصدار 2 من حزمة تصحيح Android Studio Bumblebee.
7.1.1 (فبراير 2022)
يتوافق هذا التحديث الطفيف مع الإصدار 1 من حزمة تصحيح Android Studio Bumblebee.
للاطّلاع على قائمة بإصلاحات الأخطاء المضمّنة في هذا الإصدار، راجِع منشور المدونة حول الإصدار 1 من حزمة تصحيح Android Studio Bumblebee.
التوافق
| الحد الأدنى للإصدار | الإصدار التلقائي | الملاحظات | |
|---|---|---|---|
| Gradle | 7.2 | 7.2 | لمزيد من المعلومات، اطّلِع على تحديث Gradle. |
| أدوات تصميم حزمة تطوير البرامج (SDK) | 30.0.3 | 30.0.3 | تثبيت أو ضبط أدوات إنشاء حزمة تطوير البرامج (SDK). |
| NDK | لا ينطبق | 21.4.7075529 | تثبيت أو ضبط إصدار مختلف من NDK |
| JDK | 11 | 11 | لمزيد من المعلومات، يُرجى الاطّلاع على ضبط إصدار JDK. |
أصبحت مهمة تحليل Lint قابلة للتخزين المؤقت
أصبح AndroidLintAnalysisTask متوافقًا الآن مع ذاكرة التخزين المؤقت لتصميم Gradle. إذا فعّلت ذاكرة التخزين المؤقت للإصدار من خلال ضبط
org.gradle.caching=true في ملف gradle.properties،
ستحصل مهمة تحليل Lint على ناتجها من ذاكرة التخزين المؤقت للإصدار عند
الإمكان.
غالبًا ما تكون مهمة تحليل lint هي أكبر عائق عند تشغيل lint باستخدام مكوّن Android الإضافي في Gradle، لذا يؤدي تفعيل ذاكرة التخزين المؤقت للإصدارإلى تحسين سرعة الإنشاء عند تشغيل lint في العديد من الحالات. من المفترض أن تلاحظ تحسّنًا ملحوظًا في الأداء، مثلاً، إذا كان لديك مشروع يتضمّن عدة وحدات ونظّفت دليل الإصدار قبل تشغيل أداة Lint على خادم الدمج المتواصل.
يمكن لوحدات C/C++ الآن الإشارة إلى وحدات C/C++ أخرى في المشروع نفسه
يمكن الآن إعداد وحدة Gradle Android تتضمّن رمز C/C++ للإشارة إلى ملفات العناوين ورمز المكتبة في وحدة Gradle أخرى. يُستخدم بروتوكول Prefab لنقل العناوين والمكتبات بين وحدات Gradle.
المتطلبات
-
يجب أن تكون الوحدة المستهلكة هي
CMakeوليسndk-build. سيتطلّب توفير دعم لتصميم ndk إجراء تحديث مستقبلي لحزمة NDK. قد تكون وحدة النشرCMakeأوndk-build. -
يجب أن تفعّل الوحدة المستهلكة
prefabفي ملفbuild.gradle.
android {
buildFeatures {
prefab true
}
}- يجب أن تتيح وحدة النشر
prefabPublishingفي ملفbuild.gradle.
android {
buildFeatures {
prefabPublishing true
}
}- يجب أن تشير الوحدة المستهلكة إلى الوحدة الناشرة من خلال إضافة سطر في ملف
build.gradleضمن كتلةdependencies. مثلاً:
dependencies {
implementation project(':mylibrary')
}- يجب أن تعرض وحدة النشر حزمة باستخدام قسم
prefab. مثلاً:
android {
prefab {
mylibrary {
libraryName "libmylibrary"
headers "src/main/cpp/include"
}
}
}- قد يستخدم ملف
CMakeLists.txtالخاص بالوحدة النمطية المستهلكةfind_package()لتحديد موقع الحزمة التي نشرتها الوحدة النمطية المنتجة. مثلاً:
find_package(mylibrary REQUIRED CONFIG)
target_link_libraries(
myapplication
mylibrary::mylibrary)- يجب أن يكون هناك ملف STL واحد للتطبيق بأكمله. لذا، على سبيل المثال، يمكن لكل من الوحدات النمطية المستهلكة والناشرة استخدام STL المشتركة بلغة C++.
android {
defaultConfig {
externalNativeBuild {
cmake {
arguments '-DANDROID_STL=c++_shared'
}
}
}
}للحصول على مزيد من التوضيح حول كيفية ضبط مستهلكي ومنتجي AAR الأصليين باستخدام AGP، راجِع الاعتمادية الأصلية باستخدام AGP.
إعدادات المستودع في الملف settings.gradle
عند إنشاء مشروع جديد في Android Studio Bumblebee، يحتوي ملف build.gradle ذو المستوى الأعلى على كتلة plugins، يليها رمز برمجي لتنظيف دليل التصميم:
plugins {
id 'com.android.application' version '7.1.0-beta02' apply false
id 'com.android.library' version '7.1.0-beta02' apply false
id 'org.jetbrains.kotlin.android' version '1.5.30' apply false
}
task clean(type: Delete) {
delete rootProject.buildDir
}أصبحت إعدادات المستودع التي كانت سابقًا في ملف build.gradle ذي المستوى الأعلى مضمّنة الآن في ملف settings.gradle:
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
rootProject.name = 'GradleManagedDeviceTestingNew'
include ':app'لم يتم تغيير ملف build.gradle على مستوى الوحدة. لذا، استخدِم ملف build.gradle ذي المستوى الأعلى وملف settings.gradle لتحديد إعدادات الإصدار التي تنطبق على جميع الوحدات في مشروعك أو المستودعات وموارد الاعتمادية التي تنطبق على Gradle نفسه، واستخدِم ملف build.gradle على مستوى الوحدة لتحديد إعدادات الإصدار الخاصة بوحدة معيّنة ضمن مشروعك.
أداة تصغير الموارد المحسَّنة
يتضمّن الإصدار Bumblebee من "استوديو Android" أداة محسّنة لتقليل حجم الموارد تساعد في تقليل حجم تطبيقك.
إتاحة التطبيقات التي تتضمّن ميزات ديناميكية
تم تعديل التنفيذ التلقائي لأداة تصغير حجم موارد Android في الإصدار 7.1.0-alpha09 من المكوّن الإضافي لنظام Gradle المتوافق مع Android. يتيح التنفيذ الجديد تصغير حجم التطبيقات باستخدام الوحدات الديناميكية.
تصغير إضافي تجريبي في حجم التطبيق
يمكن أن يؤدي التنفيذ الجديد لأداة تصغير حجم الموارد إلى تقليل حجم التطبيق المصغّر بشكل أكبر من خلال تعديل جدول الموارد لإزالة موارد القيم غير المستخدَمة والمراجع إلى موارد الملفات غير المستخدَمة. يمكن لأداة تصغير حجم الموارد الجديدة حذف موارد الملفات غير المستخدَمة بالكامل، ما يؤدي إلى تقليل حجم تطبيقك بشكل أكبر. لا يتم تفعيل هذا السلوك تلقائيًا بعد، ولكن يمكنك الموافقة على تجربته من خلال إضافة الخيار التجريبي android.experimental.enableNewResourceShrinker.preciseShrinking=true إلى ملف gradle.properties في مشروعك.
يُرجى الإبلاغ عن أي مشاكل تواجهك مع أداة تصغير الموارد الجديدة أو العلامة التجريبية. للمساعدة في تشخيص المشاكل أو كحلّ مؤقت، يمكنك الرجوع إلى التنفيذ السابق من خلال إضافة
android.enableNewResourceShrinker=false إلى
gradle.properties في مشروعك.
يحلّ برنامج التصغير الجديد محل الموارد غير المستخدَمة المستندة إلى الملفات بملفات بسيطة مختلفة قليلاً عن برنامج التصغير السابق للموارد، ولكن من غير المتوقّع أن يؤثر ذلك في وقت التشغيل.
من المقرَّر إزالة طريقة التنفيذ القديمة في الإصدار 8.0.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android.
نشر صيغة البناء
يتيح لك الإصدار 7.1.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android والإصدارات الأحدث تحديد تنويعة الإصدار التي تريد نشرها في مستودع Apache Maven. تنشئ "مكوّنات Android Gradle" (AGP) مكوّنًا يتضمّن صيغة إنشاء واحدة أو عدة صيغ استنادًا إلى لغة DSL الجديدة للنشر، ويمكنك استخدامها لتخصيص عملية النشر في مستودع Maven. مقارنةً بالإصدارات السابقة، يتيح ذلك أيضًا تجنُّب العمل غير الضروري، إذ لن يتم إنشاء أي مكوّنات تلقائيًا. لمزيد من المعلومات، يمكنك الاطّلاع على نموذج رمز النشر.
نشر ملف Javadoc JAR
يتيح لك الإصدار 7.1.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android والإصدارات الأحدث إنشاء Javadoc من مصادر Java وKotlin ونشر ملفات Javadoc JAR بالإضافة إلى ملفات AAR لمشاريع المكتبات. تتم إضافة Javadoc إلى ملفات POM وبيانات Gradle الوصفية الخاصة بالوحدة{:.external}. يمكنك تفعيل هذه الميزة من خلال إضافة withJavadocJar() في singleVariant أو في وحدة النشر multipleVariants.
لمزيد من المعلومات، يمكنك الاطّلاع على
نموذج رمز خيارات النشر.
نشر ملف JAR الخاص بالمصادر
يتيح لك الإصدار 7.1.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android والإصدارات الأحدث نشر ملفات JAR المصدر بلغتَي Java وKotlin، بالإضافة إلى ملفات AAR لمشاريع المكتبات. تتم إضافة المصادر إلى ملفات POM وبيانات Gradle الوصفية للوحدة{:.external}. يمكنك تفعيل هذه الميزة من خلال إضافة withSourcesJar() في حزمة النشر singleVariant أو multipleVariants. لمزيد من المعلومات، يمكنك الاطّلاع على
نموذج رمز خيارات النشر.
تغيير معنى قسم Lint
تراعي الآن جميع طرق lint التي تتجاوز مستوى الخطورة المحدّد لمشكلة ما، مثل enable وdisable/ignore وinformational وwarning وerror وfatal، ترتيب الإعدادات. على سبيل المثال، يؤدي ضبط مشكلة على أنّها خطيرة في finalizeDsl() إلى إلغاء إيقافها في لغة DSL الرئيسية. لمزيد من المعلومات، راجِع مستندات مرجع lint{} ونقاط التوسيع ومسار إصدار Android.
التوافق مع Navigation Safe Args
تمت إزالة واجهات برمجة التطبيقات الخاصة بالمكوّن الإضافي لنظام Gradle المتوافق مع Android والتي يعتمد عليها المكوّن الإضافي لنظام Gradle الخاص بـ Safe Args في Navigation. لا يتوافق الإصدار 7.1 من "مكوّن Android الإضافي لبرنامج Gradle" مع الإصدارات 2.4.0-rc1 أو 2.4.0 من Navigation Safe Args، ولكنّه يتوافق مع الإصدارَين 2.5.0-alpha01 و2.4.1. في الوقت الحالي، يمكنك استخدام الإصدار 7.1 من "مكوّن Android الإضافي لبرنامج Gradle" مع لقطة من إصدار Navigation Safe Args، وهو الإصدار 2.5.0-SNAPSHOT من Navigation. لاستخدام إصدار اللقطة، اتّبِع تعليمات اللقطة مع رقم تعريف الإصدار 8054565.
بالإضافة إلى ذلك، لن تتوافق الإصدارات 2.4.1 و2.5.0 من Navigation Safe Args مع الإصدار 4.2 من "مكوّن Android الإضافي لبرنامج Gradle"، ويجب استخدام الإصدار 7.0 من "مكوّن Android الإضافي لبرنامج Gradle" أو إصدار أحدث لاستخدام هذه الإصدارات من Safe Args.
إيقاف ميزة إنشاء المكوّنات تلقائيًا
بدءًا من الإصدار 8.0 من "مكوّن Android الإضافي في Gradle"، سيتم إيقاف ميزة الإنشاء التلقائي للمكوّنات تلقائيًا.
في الوقت الحالي، تنشئ الإصدار 7.1 من "مكوّن Android الإضافي لنظام Gradle" تلقائيًا مكوّنًا لكل صيغة إنشاء،
ويحمل هذا المكوّن الاسم نفسه الخاص بصيغة الإنشاء، بالإضافة إلى مكوّن all
يحتوي على جميع صيغ الإصدار. سيتم إيقاف ميزة الإصدار التلقائي للمكوّنات. للانتقال إلى السلوك الجديد، عليك إيقاف إنشاء المكوّنات تلقائيًا يدويًا من خلال ضبط android.disableAutomaticComponentCreation على true.. لمزيد من المعلومات، راجِع استخدام مكوّن Maven Publish الإضافي.
التوافق مع خدمة "مراقبة الأداء في Firebase"
لا يتوافق الإصدار 7.1 من "مكوّن Android الإضافي لبرنامج Gradle" مع الإصدار 1.4.0 والإصدارات الأقدم من المكوّن الإضافي لبرنامج Gradle الخاص بخدمة "مراقبة الأداء في Firebase". لن يحدِّث "مساعد ترقية المكوّن الإضافي لنظام Android" المكوّن الإضافي تلقائيًا إلى الإصدار 1.4.1، لذا إذا كنت تستخدم firebase-perf وأردت ترقية المكوّن الإضافي لنظام Android إلى الإصدار 7.1، عليك إجراء هذه الترقية يدويًا.
المشاكل المعروفة
يوضّح هذا القسم المشاكل المعروفة في الإصدار 7.1.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android.
مشاكل في اختبار الوحدات لمشروع تطبيق يستخدم مكوّن Hilt الإضافي
يحتوي مسار فئة اختبار الوحدة على فئات التطبيق غير المزوَّدة بأدوات، ما يعني أنّ Hilt لا يزوّد فئات التطبيق بأدوات للتعامل مع عملية إدخال الاعتمادية عند تنفيذ اختبارات الوحدة.
سيتم حلّ هذه المشكلة في الإصدار 7.1.1، يُرجى الاطّلاع على المشكلة رقم 213534628.