الإصدار 7.1.0 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" (كانون الثاني/يناير 2022)
يُعدّ الإصدار 7.1.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android إصدارًا رئيسيًا يتضمّن مجموعة متنوعة من الميزات والتحسينات الجديدة.
7.1.3 (نيسان/أبريل 2022)
يتضمّن هذا التحديث البسيط إصلاحات للأخطاء التالية:
- مشاكل الطبقات المكرّرة التي أبلغ عنها R8
للاطّلاع على قائمة كاملة بإصلاحات الأخطاء المضمّنة في هذا الإصدار، يمكنك الاطّلاع على مدوّنة Android Studio Bumblebee Patch 3.
7.1.2 (شباط/فبراير 2022)
يتضمّن هذا التحديث البسيط إصلاحات للأخطاء التالية:
- تعذُّر على المكوّن الإضافي لنظام Gradle المتوافق مع Android 7.1.0-rc01 تنفيذ تحويل bytecode في ASM أثناء اختبارات الوحدة
- تعذّر مزامنة Gradle مع ظهور رسالة الخطأ "تعذّر تحميل الفئة 'com.android.build.api.extension.AndroidComponentsExtension'."
- لا يمكن استخدام بعض وحدات DSL الجديدة من Groovy DSL في الإصدار 7.0.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
- واجهة برمجة التطبيقات الجديدة للنشر في AGP 7.1: لا يتم توقيع حزمة javadoc jar التي تم إنشاؤها
- يجب أن يستخدم ClassesDataSourceCache أحدث إصدار من Asm
- لا ينشر الإصدار Bumblebee من "استوديو Android" أحدث التغييرات في بعض الأحيان
للاطّلاع على قائمة كاملة بإصلاحات الأخطاء المضمّنة في هذا الإصدار، يمكنك الاطّلاع على مدوّنة Android Studio Bumblebee Patch 2.
7.1.1 (شباط/فبراير 2022)
يتوافق هذا التعديل البسيط مع إصدار Android Studio Bumblebee التصحيح 1.
للاطّلاع على قائمة بإصلاحات الأخطاء المضمّنة في هذا الإصدار، يمكنك الاطّلاع على مدونة تصحيح الخطأ 1 في الإصدار Bumblebee من Android Studio.
التوافق
الحد الأدنى للإصدار | الإصدار التلقائي | ملاحظات | |
---|---|---|---|
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
متوافقًا الآن مع ملف cache لإنشاء
Gradle. في حال تفعيل ذاكرة التخزين المؤقت للإنشاء من خلال ضبط
org.gradle.caching=true
في ملف gradle.properties
، ستحصل مهمة تحليل الأخطاء النحوية على الإخراج من ذاكرة التخزين المؤقت للإنشاء عند
أمكن ذلك.
غالبًا ما تكون مهمة تحليل الأخطاء هي أكبر عائق عند تشغيل lint باستخدام المكوّن الإضافي Android Gradle، لذا يؤدي تفعيل ذاكرة التخزين المؤقت للبناء إلى تحسين سرعة الإنشاء عند تشغيل lint في العديد من الحالات. من المفترض أن تلاحظ تحسُّنًا ملحوظًا في الأداء، على سبيل المثال، إذا كان لديك مشروع يتضمّن عدة وحدات و تنظيف دليل الإنشاء قبل تشغيل lint على خادم التطوير المتكامل (CI).
يمكن الآن أن تشير وحدات C/C++ إلى وحدات C/C++ أخرى في المشروع نفسه.
يمكن الآن إعداد وحدة Android في Gradle تحتوي على رمز C/C++ للإشارة إلىملفّات الرأس ورمز المكتبة في وحدة Gradle أخرى. يتم استخدام بروتوكول Prefab ل نقل الرؤوس والمكتبات بين وحدات Gradle.
المتطلبات
-
يجب أن تكون الوحدة المستهلكة هي
CMake
وليسndk-build
. سيتطلب استخدام أداة ndk-build تحديثًا مستقبليًا لـ 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 الأصليين وصنّاع AAR الأصليين باستخدام AGP، اطّلِع على التبعيات الأصلية باستخدام AGP.
إعدادات المستودع في ملف settings.gradle
عند إنشاء مشروع جديد في الإصدار Bumblebee من Android Studio، يحتوي ملف build.gradle
على مستوى أعلى على البنية plugins
، followed by code to clean your build directory:
متبوعًا برمز لتنظيف دليل الإنشاء:
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 Studio أداة ضغط محسّنة للموارد تساعد في تقليل حجم تطبيقك.
إتاحة التطبيقات التي تتضمّن ميزات ديناميكية
تم تعديل التنفيذ التلقائي لأداة تصغير ملفات الموارد في 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. ينشئ AGP عنصرًا يتضمّن خيارات إصدار واحدة أو متعددة استنادًا إلى لغة الترميز المحدودة للنشر الجديدة، والتي يمكنك استخدامها لتخصيص نشر في مستودع Maven. مقارنةً بالإصدارات السابقة، يتجنّب هذا الإجراء أيضًا العمل غير الضروري، لأنّه لن يتم إنشاء أيّ مكوّنات تلقائيًا. لمزيد من المعلومات، يمكنك الاطّلاع على نموذج رمز النشر.
نشر حزمة JAR لـ Javadoc
يتيح لك الإصدار 7.1.0 من AGP والإصدارات الأحدث إنشاء Javadoc من مصادر Java وKotlin
ونشر ملفات JAR الخاصة بـ Javadoc بالإضافة إلى حِزم AAR لمشاريع مكتبة. تتم إضافة Javadoc إلى ملفّي POM و
البيانات الوصفية لمكوّن Gradle{:.external}
. يمكنك تفعيل هذه الميزة من خلال إضافة withJavadocJar()
في ملف تعريف النشر
singleVariant
أو multipleVariants
.
لمزيد من المعلومات، يمكنك الاطّلاع على نموذج رمز خيارات النشر.
نشر حِزم JAR للمصادر
يتيح لك الإصدار 7.1.0 من Android Gradle Plugin والإصدارات الأحدث نشر ملفات JAR
لرمز Java وKotlin المصدر بالإضافة إلى ملفات AAR لمشاريع المكتبات. تتم إضافة المصادر إلىملفَي
POM و
البيانات الوصفية لوحدة Gradle{:.external}. يمكنك تفعيل هذه الميزة
من خلال إضافة withSourcesJar()
في رمز
singleVariant
أو multipleVariants
لنشر
المحتوى. لمزيد من المعلومات، يمكنك الاطّلاع على نموذج رمز خيارات النشر.
تغيير دلالي في رمز Lint
إنّ جميع طرق فحص الأخطاء التي تلغي مستوى الخطورة المحدّد لمشكلة
معيّنة، مثل enable
وdisable
/ignore
وinformational
وwarning
وerror
وfatal
، تلتزم الآن بترتيب الإعداد. على سبيل المثال، يؤدي تحديد مشكلة على أنّها خطيرة في
finalizeDsl()
إلى إلغاء إيقافها في DSL الرئيسي. لمزيد من المعلومات، يُرجى الاطّلاع على مستندات مرجعية لشدَّة lint{}
الحظر ومسار إنشاء Android
ونقاط التوسيع.
توافق Navigation Safe Args
تمّت إزالة واجهات برمجة التطبيقات لـ AGP التي يعتمد عليها مكوّن Gradle الإضافي لـ "التنقّل Safe Args". لا يعمل AGP 7.1 مع الإصدار 2.4.0-rc1 أو 2.4.0 من Navigation Safe Args، ولكن سيعمل مع الإصدارَين 2.5.0-alpha01 و2.4.1. في الوقت الحالي، يمكنك استخدام AGP 7.1 مع إصدار لقطة شاشة من Navigation Safe Args، وهو Navigation 2.5.0-SNAPSHOT، كحل بديل. لاستخدام إصدار الإصدار التجريبي، اتّبِع تعليمات الإصدار التجريبي باستخدام رقم تعريف الإصدار #8054565.
بالإضافة إلى ذلك، لن يعمل الإصداران 2.4.1 و2.5.0 من Navigation Safe Args مع AGP 4.2. لاستخدام هذين الإصدارَين من Safe Args، يجب استخدام AGP 7.0 والإصدارات الأحدث.
إيقاف إنشاء المكوّنات تلقائيًا
بدءًا من الإصدار 8.0 من AGP، سيتم إيقاف ميزة إنشاء المكوّنات تلقائيًا بشكلٍ تلقائي.
في الوقت الحالي، ينشئ AGP 7.1 تلقائيًا مكوّنًا لكلّ صيغة إصدار،
يحمل الاسم نفسه كأنّه صيغة الإصدار، ومكوّن all
يحتوي على جميع صِيَغ الإصدار. سيتم إيقاف ميزة الإنشاء التلقائي للمكونات. للانتقال إلى السلوك الجديد، عليك
إيقاف إنشاء المكوّنات التلقائي يدويًا عن طريق ضبط
android.disableAutomaticComponentCreation
على true.
لمزيد من المعلومات، يُرجى الاطّلاع على
استخدام المكوّن الإضافي Maven Publish.
التوافق مع ميزة "مراقبة الأداء" في Firebase
لا يتوافق الإصدار 7.1 من Android Gradle Plugin مع الإصدار 1.4.0 من المكوّن الإضافي لنظام Gradle
لمراقبة الأداء في Firebase والإصدارات الأقدم. لن يؤدي "مساعِد ترقية AGP" إلى تحديث المكوّن الإضافي تلقائيًا إلى الإصدار 1.4.1، لذا إذا كنت تستخدم firebase-perf
وأردت
ترقية AGP إلى الإصدار 7.1، عليك إجراء هذه الترقية المحدّدة يدويًا.
المشاكل المعروفة
يوضّح هذا القسم المشاكل المعروفة في المكوّن الإضافي لنظام Gradle المتوافق مع Android 7.1.0.
مشاكل في اختبار الوحدة لمشروع تطبيق يستخدم المكوّن الإضافي Hilt
يحتوي مسار فصول اختبار الوحدة على فئات التطبيق غير المُعدَّة للاختبار، ما يعني أنّ أداة Hilt لا تُعدّ فئات التطبيق للتعامل مع حقن التبعية عند تنفيذ اختبارات الوحدة.
سيتم حلّ هذه المشكلة في الإصدار 7.1.1، راجِع المشكلة رقم 213534628.