الإصدار 8.0.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android (نيسان/أبريل 2023)

الإصدار 8.0.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android هو إصدار رئيسي يتضمّن مجموعة متنوعة من الميزات والتحسينات الجديدة.

التوافق

الحد الأدنى للإصدار الإصدار التلقائي Notes
مبرّد من نظام التشغيل Android من نظام التشغيل Android لمزيد من المعلومات، يمكنك الاطّلاع على تحديث Gradle.
أدوات إنشاء حِزم تطوير البرامج (SDK) 30.0.3 30.0.3 ثبِّت أو ضبط أدوات إصدار SDK.
العُقدة (NDK) لا ينطبق 25.1.8937393 ثبِّت أو اضبط نسخة مختلفة من NDK.
JDK 17 17 للاطلاع على مزيد من المعلومات، راجع إعداد إصدار JDK.

إصدارات التصحيح

في ما يلي قائمة بإصدارات التصحيح للإصدار 8.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android.

الإصدار 8.0.2 من المكوّن الإضافي لنظام Gradle المتوافق مع Android (أيار/مايو 2023)

للحصول على قائمة بالأخطاء التي تم إصلاحها في الإصدار 8.0.2 من AGP، راجِع المشاكل التي تم إغلاقها في "استوديو Android 2022.2.1".

الإصدار 8.0.1 من المكوّن الإضافي لنظام Gradle المتوافق مع Android (أيار/مايو 2023)

يتضمّن هذا التحديث الثانوي إصلاحات الأخطاء التالية:

المشاكل التي تم إصلاحها
خطأ: "No VersionRequirement مع المعرف المقدم في الجدول" بعد ترقية AGP 7.2.2 -> 7.4.0
R8 NullPointerException في markTypeAsLive AGP 7.4.1
[R8 4.0.53] تعذّر التحقّق من الفئة الثابتة على نظام التشغيل Android 11

تغيير قد يؤدي إلى عطل: مساحة الاسم مطلوبة في النص البرمجي للإصدار على مستوى الوحدة

يجب ضبط مساحة الاسم في ملف build.gradle.kts على مستوى الوحدة، بدلاً من ملف البيان. يمكنك بدء استخدام خاصية DSL namespace بدءًا من AGP 7.3. لمزيد من المعلومات، يمكنك الاطّلاع على ضبط مساحة اسم.

عند الانتقال إلى مساحة الاسم DSL، انتبه إلى المشاكل التالية:

  • تستنتج الإصدارات السابقة من AGP مساحة اسم الاختبار من مساحة الاسم الرئيسية أو رقم تعريف التطبيق، وذلك بشكل غير صحيح في بعض الحالات. يمنع مساعد ترقية AGP الترقية إذا وجد أن مساحة الاسم الرئيسية للمشروع ومساحة الاسم التجريبية متطابقتان. إذا تم حظر الترقية، عليك تغيير testNamespace يدويًا وتعديل رمز المصدر وفقًا لذلك.
  • بعد تغيير مساحة اسم الاختبار، من الممكن أن يتم تجميع الرمز الخاص بك، ولكن تفشل الاختبارات المستخدمة في وقت التشغيل. يمكن أن يحدث ذلك إذا كان رمز مصدر الاختبار المساعِد يشير إلى مورد محدّد في كل من androidTest ومصادر التطبيقات.

لمزيد من المعلومات، يُرجى الاطّلاع على المشكلة رقم 191813691 في التعليق رقم 19.

تغييرات قد تؤدي إلى عطل: القيم التلقائية لخيارات الإصدار

بدءًا من الإصدار AGP 8.0، تغيَّرت القيم التلقائية لهذه العلامات لتحسين أداء الإصدار. للحصول على المساعدة في تعديل الرموز البرمجية بما يتوافق مع بعض هذه التغييرات، استخدِم مساعِد ترقية AGP (الأدوات > مساعِد ترقية AGP). يرشدك "مساعد الترقية" خلال عملية تحديث الرموز البرمجية للتوافق مع السلوك الجديد أو وضع العلامات للحفاظ على السلوك السابق.

إبلاغ قيمة تلقائية جديدة القيمة التلقائية السابقة Notes
android.defaults.buildfeatures.buildconfig false true لا يؤدّي 8.0 AGP إلى إنشاء BuildConfig تلقائيًا. يجب تحديد هذا الخيار باستخدام DSL في المشاريع التي تحتاج إليها.
android.defaults.buildfeatures.aidl false true لا يتيح الإصدار 8.0 من AGP دعمًا لـ AIDL بشكل تلقائي. ويجب تحديد هذا الخيار باستخدام DSL في المشاريع التي تحتاج إليها. تم التخطيط لإزالة هذه العلامة في الإصدار 9.0 من AGP.
android.defaults.buildfeatures.renderscript false true لا يتيح الإصدار 8.0 من AGP إمكانية دعم RenderScript بشكل تلقائي. ويجب تحديد هذا الخيار باستخدام DSL في المشاريع التي تحتاج إليها. تم التخطيط لإزالة هذه العلامة في الإصدار 9.0 من AGP.
android.nonFinalResIds true false ينشئ الإصدار 8.0 من AGP تلقائيًا R فئة تتضمّن حقولاً غير نهائية تلقائيًا.
android.nonTransitiveRClass true false ينشئ الإصدار 8.0 من AGP فئات R للموارد المحددة في الوحدة الحالية فقط.
android.enableR8.fullMode true false يعمل الإصدار 8.0 من AGP على تفعيل الوضع الكامل لـ R8 بشكل تلقائي. لمزيد من التفاصيل، راجِع الوضع الكامل R8.

تغييرات قد تؤدي إلى: فرض قيم خيارات الإصدار

بدءًا من 8.0 AGP، لم يعد بإمكانك تغيير قيم هذه العلامات. وإذا حدَّدتها في ملف gradle.properties، يتم تجاهل القيمة وتطبع تحذيرات AGP.

إبلاغ القيمة المفروضة Notes
android.dependencyResolutionAtConfigurationTime.warn true ويصدر الإصدار 8.0 من AGP تحذيرًا في حال رصد درجة دقة الضبط أثناء مرحلة الإعداد لأنّها تؤثر سلبًا في أوقات إعداد Gradle.
android.r8.failOnMissingClasses true تعذّر استخدام الإصدار 8.0 من AGP في الإصدارات التي تستخدم R8 في حال عدم توفّر فئات لضمان تحسين DEX بشكل أفضل. لحلّ هذه المشكلة، عليك إضافة المكتبات غير المتوفّرة أو قواعد الاحتفاظ بالبيانات -dontwarn. للحصول على مزيد من التفاصيل، راجِع تحذيرات بشأن الفئة غير المتوفرة في R8 shrinker.
android.testConfig.useRelativePath true عند تفعيل إمكانية استخدام موارد Android ومواد العرض وبياناته في اختبارات الوحدات، ينشئ الإصدار 8.0 من AGP ملف test_config.properties يحتوي على المسارات النسبية فقط. ويضمن ذلك أن تستخدم اختبارات وحدات Android ذاكرة التخزين المؤقت لإصدار Gradle دائمًا.
android.useNewJarCreator true يستخدم AGP مكتبة Zipflinger عند إنشاء ملفات JAR لتحسين أداء الإصدار.
android.bundletool.includeRepositoriesInDependencyReport true عند تفعيل إضافة معلومات الاعتماد على حزمة SDK في حِزم AAB وحِزم APK، يضيف الإصدار 8.0 من AGP أيضًا قائمة بمستودعات المشروع إلى هذه المعلومات. لمزيد من المعلومات، يمكنك الاطّلاع على المعلومات حول الاعتمادية على Play Console.
android.enableArtProfiles true يتم الآن إنشاء الملفات الشخصية الأساسية دائمًا. راجع الملفات الشخصية المرجعية للحصول على التفاصيل.
android.enableNewResourceShrinker true يمكنك استخدام تنفيذ أداة shinker الجديدة للموارد تلقائيًا. يتضمّن الإصدار الجديد من تقليص الموارد إمكانية استخدام الميزات الديناميكية.
android.enableSourceSetPathsMap true ويتم استخدامها لاحتساب تعيينات مسارات الموارد النسبية، ما يعني أنّ إصدارات Gradle محدّثة أكثر من غيرها.
android.cacheCompileLibResources true يمكن الآن تخزين موارد المكتبة المجمّعة مؤقتًا بشكل تلقائي لأنّ نظام Gradle يتتبّع ملفات الموارد ذات الصلة بموقع المشروع. يتطلب ذلك تفعيل android.enableSourceSetPathsMap.
android.disableAutomaticComponentCreation true لا ينشئ AGP 8.0 أي مكوّن برامج بشكل تلقائي. بدلاً من ذلك، ينشئ AGP مكوّنات برامج للنُسخ المختلفة التي تم إعدادها ليتم نشرها باستخدام DSL للنشر.

علامة ثابتة جديدة للملف الشخصي للتنفيذ

يشتمل AGP على العلامة الجديدة android.settings.executionProfile. استخدِم هذه العلامة لإلغاء الملف الشخصي التلقائي للتنفيذ من SettingsExtension. للمزيد من المعلومات، اطّلِع على مستندات المكوّن الإضافي للإعدادات.

لمعاينة العلامات التجريبية، يُرجى الاطّلاع على ملاحظات الإصدار الخاصة بالمعاينة.

تخصيص خاصية Kotlin الكسول غير متاح

إذا كنت تستخدم Kotlin DSL من Gradle للنصوص البرمجية للإصدار، يُرجى العلم أنّ كلاً من Android Studio وAGP 8.0 لا يتيحان تعيين الخصائص التجريبية باستخدام عامل التشغيل =. لمزيد من المعلومات حول هذه الميزة، راجع ملاحظات الإصدار والمستندات.

فئات مهام "أداة تحليل إنشاء"

بدءًا من إصدار Android Studio Flamingo، تتضمّن "أداة تحليل الإصدار" طريقة عرض تلقائية جديدة للمهام التي تؤثر في مدة الإصدار. إذا كان مشروعك يستخدم AGP 8.0 أو إصدارًا أعلى، فبدلاً من عرض المهام بشكل فردي، ستجمع أداة تحليل الإصدار هذه المهام حسب الفئة. على سبيل المثال، يتم تجميع المهام الخاصة بموارد Android أو Kotlin أو Dexing معًا ثم ترتيبها حسب مدة الإصدار. يجعل هذا من السهل معرفة الفئة التي لها أكبر تأثير على وقت الإنشاء. يعرض توسيع كل فئة قائمة بالمهام المقابلة. لعرض المهام بشكل فردي، بدون تجميع، استخدِم القائمة المنسدلة تجميع حسب.

فئات مهام "أداة تحليل إنشاء"

مكوّن إضافي جديد للإعدادات

يقدم الإصدار AGP 8.0.0-alpha09 المكوّن الإضافي الجديد للإعدادات. يتيح لك المكوّن الإضافي للإعدادات التركيز على عمليات الضبط العامة، أي التهيئات التي تنطبق على جميع الوحدات، في مكان واحد حتى لا تحتاج إلى نسخ الإعدادات ولصقها في وحدات متعددة. بالإضافة إلى ذلك، يمكنك استخدام المكوّن الإضافي للإعدادات لإنشاء الملفات الشخصية لتنفيذ الأدوات، أو تعليمات مختلفة حول كيفية تشغيل الأداة، والتبديل بينها.

لاستخدام المكوّن الإضافي للإعدادات، طبِّق المكوِّن الإضافي في ملف settings.gradle:

apply plugin 'com.android.settings'

مركزية عمليات الضبط العالمية

لضبط الإعدادات العامة، استخدِم مجموعة android الجديدة في ملف settings.gradle. إليك مثال على ذلك:

android {
  compileSdk 31
  minSdk 28
  ...
}

الملفات الشخصية لتنفيذ الأدوات

يتيح لك المكوّن الإضافي للإعدادات إنشاء ملفات شخصية لتنفيذ بعض الأدوات. يحدد الملف الشخصي للتنفيذ كيفية تشغيل الأداة، ويمكنك تحديد ملفات تعريف تنفيذ مختلفة بناءً على البيئة. في الملف الشخصي للتنفيذ، يمكنك تعيين وسيطات JVM لأداة ما وإعدادها لتعمل في عملية منفصلة. في الوقت الحالي، لا تتوفر سوى أداة 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. يضم استوديو Android Flamingo الإصدار JDK 17 ويضبط نظام Gradle على استخدامه تلقائيًا، ما يعني أنّ معظم مستخدمي "استوديو Android" لا يحتاجون إلى إجراء أي تغييرات في إعدادات مشاريعهم.

إذا كنت تريد ضبط إصدار JDK يدويًا الذي يستخدمه AGP داخل "استوديو Android"، عليك استخدام JDK 17 أو إصدار أحدث.

عند استخدام AGP بشكل مستقل عن "استوديو Android"، يمكنك ترقية إصدار JDK من خلال ضبط JAVA_HOME متغير البيئة أو -Dorg.gradle.java.home خيار سطر الأوامر في دليل تثبيت JDK 17.