يُعدّ الإصدار 8.0.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android إصدارًا رئيسيًا يتضمّن مجموعة متنوعة من التحسينات والميزات الجديدة.
التوافق
الحد الأدنى للإصدار | الإصدار التلقائي | ملاحظات | |
---|---|---|---|
Gradle | من نظام التشغيل Android | من نظام التشغيل Android | لمزيد من المعلومات، يُرجى الاطّلاع على مقالة تحديث Gradle. |
أدوات إنشاء حِزم SDK | 30.0.3 | 30.0.3 | ثبِّت أو اضبط أدوات إنشاء حِزم SDK. |
NDK | لا ينطبق | 25.1.8937393 | ثبِّت أو ضبط إصدارًا مختلفًا من حزمة NDK. |
JDK | 17 | 17 | لمزيد من المعلومات، يُرجى الاطّلاع على ضبط إصدار JDK. |
إصدارات الرموز الإصلاحية
في ما يلي قائمة بإصدارات التصحيح للمكوّن الإضافي لنظام Gradle المتوافق مع Android 8.0.
الإصدار 8.0.2 من المكوّن الإضافي لنظام Gradle المتوافق مع Android (مايو 2023)
للحصول على قائمة بالأخطاء التي تم إصلاحها في AGP 8.0.2، يُرجى الاطّلاع على المشاكل المغلقة في Android Studio 2022.2.1.
الإصدار 8.0.1 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" (مايو 2023)
يتضمّن هذا التحديث البسيط إصلاحات للأخطاء التالية:
المشاكل التي تم إصلاحها | |
---|---|
الخطأ: "لا يتوفّر عنصر VersionRequirement يحمل رقم التعريف المحدّد في الجدول" بعد ترقية AGP من الإصدار 7.2.2 إلى الإصدار 7.4.0
|
|
R8 NullPointerException at markTypeAsLive AGP 7.4.1
|
|
[R8 4.0.53] تعذّر التحقّق من فئة التطبيق على نظام التشغيل Android 11
|
تغيير جذري: يجب إدخال مساحة الاسم في نص إنشاء على مستوى الوحدة
يجب ضبط مساحة الاسم في ملف build.gradle.kts
على مستوى الوحدة، بدلاً
من ملف البيان. يمكنك بدء استخدام موقع DSL على namespace
بدءًا من AGP 7.3. لمزيد من المعلومات، يُرجى الاطّلاع على
ضبط مساحة اسم.
عند نقل البيانات إلى لغة وصف النطاقات (DSL)، يُرجى الانتباه إلى المشاكل التالية:
- في بعض الحالات، تستنتج الإصدارات السابقة من AGP مساحة الاسم الاختبارية من مساحة الاسم الرئيسية أو
رقم تعريف التطبيق بشكل غير صحيح. يحظر "مساعِد ترقية AGP" عملية التصعيد إذا تبيّن له أنّ مساحة الاسم الرئيسية لمشروعك ومساحة الاسم الاختبارية متطابقتان. إذا تم حظر الترقية، عليك تغيير
testNamespace
يدويًا وتعديل الرمز المصدر وفقًا لذلك. - بعد تغيير مساحة الاسم للاختبار، من المحتمل أن يتم تجميع الرمز المبرمَج،
ولكن تفشل الاختبارات التي تم قياس أدائها أثناء التشغيل. يمكن أن يحدث ذلك إذا كان رمز المصدر لاختبارك المزوّد بأدوات قياس الأداء يشير إلى مورد محدّد في كل من
androidTest
ومصادر التطبيق.
لمزيد من المعلومات، يُرجى الاطّلاع على التعليق رقم 19 في المشكلة رقم 191813691.
التغييرات الأساسية: القيم التلقائية لخيار الإنشاء
بدءًا من الإصدار 8.0 من AGP، تم تغيير القيم التلقائية لهذه العلامات لتحسين أداء عملية الإنشاء. للحصول على مساعدة في تعديل الرمز البرمجي لتتوافق مع بعض هذه التغييرات، استخدِم "مساعِد ترقية AGP" (الأدوات > مساعِد ترقية AGP). يرشدك "مساعِد الترقية" خلال عملية تعديل الرمز البرمجي ليتلاءم مع السلوك الجديد أو ضبط علامات للحفاظ على السلوك السابق.
إبلاغ | القيمة التلقائية الجديدة | القيمة التلقائية السابقة | ملاحظات |
---|---|---|---|
android.defaults.buildfeatures.buildconfig |
false |
true |
لا ينشئ AGP 8.0 BuildConfig تلقائيًا. عليك
تحديد هذا الخيار باستخدام لغة برمجة التطبيقات المحدودة (DSL) في المشاريع التي تحتاج فيها إلى ذلك. |
android.defaults.buildfeatures.aidl |
false |
true |
لا يفعّل الإصدار 8.0 من AGP ميزة دعم AIDL تلقائيًا. عليك تحديد هذا الخيار باستخدام لغة برمجة التطبيقات المحدودة (DSL) في المشاريع التي تحتاج فيها إلى ذلك. من المخطّط إزالة هذا الإعداد في الإصدار 9.0 من AGP. |
android.defaults.buildfeatures.renderscript |
false |
true |
لا يفعّل AGP 8.0 دعم RenderScript تلقائيًا. عليك تحديد هذا الخيار باستخدام لغة وصف البيانات (DSL) في المشاريع التي تحتاج فيها إلى ذلك. من المخطّط إزالة هذا الإعداد في الإصدار 9.0 من AGP. |
android.nonFinalResIds |
true |
false |
ينشئ AGP 8.0 فئات R تحتوي على حقول غير نهائية
تلقائيًا. |
android.nonTransitiveRClass |
true |
false |
ينشئ AGP 8.0 فئات R للموارد المحدّدة في
الوحدة الحالية فقط. |
android.enableR8.fullMode |
true |
false |
تفعِّل AGP 8.0 وضع R8 الكامل تلقائيًا. لمزيد من التفاصيل، يُرجى الاطّلاع على الوضع الكامل لـ R8. |
التغييرات الأساسية: قيم خيارات الإنشاء المفروضة
بدءًا من AGP 8.0، لم يعُد بإمكانك تغيير قيم هذه العلامات. وفي حال تحديدها في ملف gradle.properties
، يتم تجاهل القيمة ويُطبع AGP تحذيرات.
إبلاغ | القيمة المفروضة | ملاحظات |
---|---|---|
android.dependencyResolutionAtConfigurationTime.warn |
true |
يُرسِل AGP 8.0 تحذيرًا إذا رصد درجة دقة الإعدادات أثناء مرحلة الإعداد لأنّها تؤثر سلبًا في مدّة إعداد Gradle. |
android.r8.failOnMissingClasses |
true |
لا يُسمح باستخدام الإصدار 8.0 من AGP مع عمليات الإنشاء التي تستخدِم R8 في حال عدم توفّر فئات لضمان تحسين أفضل لـ DEX. لحلّ هذه المشكلة، عليك إضافة
المكتبات المفقودة أو -dontwarn قواعد الاحتفاظ. لمزيد من التفاصيل،
يُرجى الاطّلاع على
تحذيرات عدم توفّر فئة في أداة تصغير R8. |
android.testConfig.useRelativePath |
true |
عند تفعيل إمكانية استخدام موارد Android ومواد العرض والملفات البيانية في
اختبارات الوحدات، ينشئ AGP 8.0 ملفًا
test_config.properties يحتوي على مسارات
نسبية فقط. يضمن ذلك أنّه يمكن لاختبارات وحدات Android استخدام ذاكرة التخزين المؤقت لإنشاء Gradle
في أي وقت. |
android.useNewJarCreator |
true |
يستخدم AGP مكتبة Zipflinger عند إنشاء ملفات JAR لتحسين أداء عملية الإنشاء. |
android.bundletool.includeRepositoriesInDependencyReport |
true |
عند تفعيل إضافة معلومات العناصر الاعتمادية لحزمة SDK في حِزم APK وحِزم AAB، يضيف AGP 8.0 أيضًا قائمة بمستودعات المشاريع إلى هذه المعلومات. للحصول على المزيد من المعلومات، يُرجى الاطّلاع على معلومات عن التبعيات في Play Console. |
android.enableArtProfiles |
true |
يتمّ الآن إنشاء الملفات الشخصية الأساسية دائمًا. راجِع الملفات الشخصية الأساسية لمعرفة التفاصيل. |
android.enableNewResourceShrinker |
true |
استخدام آلية تنفيذ أداة تقليل حجم الموارد الجديدة تلقائيًا يتضمّن أداة تصغير الموارد الجديدة ميزات ديناميكية. |
android.enableSourceSetPathsMap |
true |
تُستخدَم لحساب عمليات ربط مسارات الموارد النسبية، وبالتالي تكون عمليات إنشاء Gradle محدّثة بشكلٍ متكرّر. |
android.cacheCompileLibResources |
true |
يمكن الآن تخزين موارد المكتبة المجمّعة في ذاكرة التخزين المؤقت تلقائيًا لأنّ Gradle
يتتبّع ملفات الموارد بالنسبة إلى موقع المشروع. تتطلّب
تفعيل android.enableSourceSetPathsMap . |
android.disableAutomaticComponentCreation |
true |
لا ينشئ AGP 8.0 أيّ SoftwareComponent تلقائيًا. وبدلاً من ذلك، تنشئ أداة AGP عناصر SoftwareComponents فقط للصيغ التي تم ضبطها للنشر باستخدام لغة وصف برمجي للنشر. |
علامة ثابتة جديدة لملف التنفيذ
يتضمّن AGP العلامة الجديدة android.settings.executionProfile
. استخدِم هذه العلامة لتجاوز الملف الشخصي التلقائي للتنفيذ من SettingsExtension
.
لمزيد من المعلومات، يُرجى الاطّلاع على مستندات المكوّن الإضافي للإعدادات.
لمعاينة علامات الإصدارات التجريبية، اطّلِع على ملاحظات الإصدار التجريبي.
لا تتوفّر ميزة تحديد السمات غير المُشغَّلة في Kotlin.
إذا كنت تستخدِم Kotlin DSL في Gradle لبرامج نصية لبناء التطبيق، يُرجى العِلم أنّ Android
Studio وAGP 8.0 لا يتيحان تحديد السمة التجريبية باستخدام عامل التشغيل
=
. لمزيد من المعلومات عن هذه الميزة، يُرجى الاطّلاع على ملاحظات الإصدار
والمستندات.
فئات مهام أداة تحليل الإصدار
بدءًا من الإصدار Flamingo من "استوديو Android"، يتضمّن "أداة تحليل عمليات البناء" عرضًا تلقائيًا جديدًا ل tasks التي تؤثّر في مدة عملية البناء. إذا كان مشروعك يستخدم الإصدار 8.0 من AGP أو إصدارًا أحدث، بدلاً من عرض المهام بشكلٍ فردي، يجمعها "أداة تحليل عمليات البناء" معًا حسب فئتها. على سبيل المثال، يتم تجميع المهام الخاصة بموارد Android أو Kotlin أو Dexing معًا ثم ترتيبها حسب مدة التصميم. يسهّل ذلك معرفة الفئة التي لها التأثير الأكبر في وقت الإنشاء. يؤدي توسيع كل فئة إلى عرض قائمة بالمهام المقابلة. لعرض المهام بشكل فردي، بدون تجميعها، استخدِم القائمة المنسدلة التجميع حسب.
مكوّن إضافي للإعدادات الجديدة
يقدّم الإصدار AGP 8.0.0-alpha09 المكوّن الإضافي الجديد للإعدادات. يتيح لك المكوّن الإضافي للإعدادات تجميع الإعدادات العامة، أي الإعدادات التي تنطبق على جميع الوحدات، في مكان واحد كي لا تحتاج إلى نسخ الإعدادات ولصقها في عدة وحدات. بالإضافة إلى ذلك، يمكنك استخدام المكوّن الإضافي للإعدادات لإنشاء ملفّات تنفيذ للأدوات أو تعليمات مختلفة حول كيفية تشغيل أداة معيّنة، وكذلك التبديل بينها.
لاستخدام المكوّن الإضافي للإعدادات، طبِّق المكوّن الإضافي في ملف settings.gradle
:
apply plugin 'com.android.settings'
تجميع الإعدادات العامة في مكان واحد
لضبط الإعدادات العامة، استخدِم العنصر android
الجديد في ملف
settings.gradle
. وفي ما يلي مثال لذلك:
android {
compileSdk 31
minSdk 28
...
}
الملفات الشخصية لتنفيذ الأدوات
يتيح لك المكوّن الإضافي للإعدادات أيضًا إنشاء ملفات تعريف تنفيذ لبعض الأدوات. يحدِّدملف التنفيذ كيفية تشغيل الأداة، ويمكنك اختيار ملفات تنفيذ مختلفة حسب البيئة. في ملف التنفيذ، يمكنك ضبط مَعلمات Java Virtual Machine لأداة وضبطها لتشغيلها في عملية منفصلة. لا تتوفّر حاليًا سوى أداة R8.
أنشئ ملفات تعريف تنفيذ واضبط ملف التعريف التلقائي للتنفيذ في ملف
settings.gradle
، كما هو موضّح في المثال التالي:
android {
execution {
profiles {
high {
r8 {
jvmOptions += ["-Xms2048m", "-Xmx8192m", "-XX:+HeapDumpOnOutOfMemoryError"]
runInSeparateProcess true
}
}
low {
r8 {
jvmOptions += ["-Xms256m", "-Xmx2048m", "-XX:+HeapDumpOnOutOfMemoryError"]
runInSeparateProcess true
}
}
ci {
r8.runInSeparateProcess false
}
}
defaultProfile "low"
}
}
لإلغاء الملف الشخصي التلقائي، اختَر ملفًا شخصيًا مختلفًا باستخدام السمة
android.experimental.settings.executionProfile
في ملف
gradle.properties
:
android.experimental.settings.executionProfile=high
يمكنك أيضًا ضبط هذه السمة باستخدام سطر الأوامر، ما يتيح لك إعداد
عمليات عمل مختلفة. على سبيل المثال، إذا كان لديك سير عمل دمج مستمر،
يمكنك استخدام سطر الأوامر لتغيير ملف الأداء بدون الحاجة إلى
تغيير ملف settings.gradle
:
./gradlew assembleRelease \
-Pandroid.experimental.settings.executionProfile=ci
يجب تثبيت JDK 17 لتشغيل AGP 8.0
عند استخدام الإصدار 8.0 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" لإنشاء تطبيقك، يجب الآن استخدام JDK 17 لتشغيل Gradle. يُجمِّع إصدار Flamingo من Android Studio حِزمة JDK 17 ويضبط Gradle لاستخدامها تلقائيًا، ما يعني أنّ معظم مستخدمي Android Studio لا يحتاجون إلى إجراء أي تغييرات على الإعدادات في مشاريعهم.
إذا كنت بحاجة إلى ضبط إصدار JDK يدوياً الذي يستخدمه AGP داخل Android Studio، عليك استخدام JDK 17 أو إصدار أحدث.
عند استخدام حزمة AGP بشكل مستقل عن "استوديو Android"، عليك ترقية إصدار JDK من خلال
ضبط JAVA_HOME
متغيّر البيئة
أو -Dorg.gradle.java.home
خيار سطر الأوامر
في دليل تثبيت JDK 17.
المشاكل التي تم إصلاحها
الإصدار 8.0.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
المشاكل التي تم إصلاحها | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
مكوّن إضافي لنظام Gradle المتوافق مع Android |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Dexer (D8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
دمج Lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Shrinker (R8) |
|
الإصدار 8.0.1 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
المشاكل التي تم إصلاحها | ||||
---|---|---|---|---|
Shrinker (R8) |
|
الإصدار 8.0.2 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
المشاكل التي تم إصلاحها | |||||
---|---|---|---|---|---|
Shrinker (R8) |
|