الإصدار 7.1.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android (يناير 2022)
الإصدار 7.1.0 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" هو إصدار رئيسي يتضمّن مجموعة متنوّعة من الميزات والتحسينات الجديدة.
7.1.3 (أبريل 2022)
يتضمّن هذا التحديث البسيط إصلاحات الأخطاء التالية:
- مشاكل الصفوف المكرّرة التي أبلغ عنها R8
للاطّلاع على قائمة كاملة بإصلاحات الأخطاء المضمّنة في هذا الإصدار، راجِع منشور المدونة حول الإصدار 3 من حزمة تصحيح Android Studio Bumblebee.
7.1.2 (فبراير 2022)
يتضمّن هذا التحديث البسيط إصلاحات الأخطاء التالية:
- تعذُّر تنفيذ المكوّن الإضافي لنظام Gradle المتوافق مع Android بالإصدار 7.1.0-rc01 لعملية تحويل رمز بايت ASM أثناء اختبارات الوحدات
- تعذُّر مزامنة Gradle مع ظهور رسالة الخطأ "تعذّر تحميل الفئة 'com.android.build.api.extension.AndroidComponentsExtension'"
- لا يمكن استخدام بعض أقسام DSL الجديدة من Groovy DSL في الإصدار 7.0.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android.
- واجهة برمجة تطبيقات النشر الجديدة في الإصدار 7.1 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android": لا يتم توقيع ملف jar الخاص بـ javadoc الذي تم إنشاؤه
- يجب أن تستخدم ClassesDataSourceCache أحدث إصدار من Asm
- لا ينشر استوديو Android BumbleBee دائمًا آخر التغييرات
للاطّلاع على قائمة كاملة بإصلاحات الأخطاء المضمّنة في هذا الإصدار، راجِع منشور المدونة حول الإصدار 2 من حزمة تصحيح Android Studio Bumblebee.
7.1.1 (فبراير 2022)
يتوافق هذا التحديث الطفيف مع الإصدار 1 من حزمة تصحيح استوديو Android 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
عند إنشاء مشروع جديد في الإصدار Bumblebee من "استوديو Android"، يحتوي ملف 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". لن يحدِّث "مساعد ترقية المكوّن الإضافي لنظام Gradle المتوافق مع Android" المكوّن الإضافي تلقائيًا إلى الإصدار 1.4.1، لذا إذا كنت تستخدم firebase-perf وأردت ترقية المكوّن الإضافي لنظام Gradle المتوافق مع Android إلى الإصدار 7.1، عليك إجراء هذه الترقية يدويًا.
المشاكل المعروفة
يوضّح هذا القسم المشاكل المعروفة في الإصدار 7.1.0 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android".
مشاكل في اختبار وحدة مشروع تطبيق يستخدم المكوّن الإضافي Hilt
يحتوي مسار فئة اختبار الوحدة على فئات التطبيق غير المزوَّدة بأدوات، ما يعني أنّ Hilt لا يزوّد فئات التطبيق بأدوات للتعامل مع عملية إدخال الاعتمادية عند تنفيذ اختبارات الوحدة.
سيتم حلّ هذه المشكلة في الإصدار 7.1.1، يُرجى الاطّلاع على المشكلة رقم 213534628.