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

تحتوي هذه الصفحة على ملاحظات الإصدار للإصدارات التجريبية من المكوّن الإضافي لنظام Gradle المتوافق مع Android‏ (AGP).

الإصدار 9.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android

الإصدار 9.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android هو إصدار رئيسي جديد من هذا المكوّن، ويتضمّن تغييرات في واجهة برمجة التطبيقات والسلوك.

للتحديث إلى الإصدار 9.0.0-alpha04 من المكوّن الإضافي لنظام Gradle المتوافق مع Android، استخدِم مساعد ترقية المكوّن الإضافي لنظام Gradle المتوافق مع Android في الإصدار 4 من تحديث Narwhal من "استوديو Android" | 2025.1.4.

يساعد "مساعد ترقية" AGP في الحفاظ على السلوكيات الحالية عند ترقية مشروعك عند الاقتضاء، ما يتيح لك ترقية مشروعك لاستخدام الإصدار 9.0 من AGP، حتى إذا لم تكن مستعدًا لاستخدام جميع الإعدادات التلقائية الجديدة في الإصدار 9.0 من AGP.

التوافق

الحد الأقصى لمستوى واجهة برمجة تطبيقات Android الذي يتيحه الإصدار 9.0.0-alpha04 من المكوّن الإضافي لنظام Gradle المتوافق مع Android هو المستوى 36 من واجهة برمجة التطبيقات.

يتطلّب الإصدار 9.0.0-alpha04 من المكوّن الإضافي لنظام Gradle المتوافق مع Android استخدام الإصدار 9.0.0 من Gradle.

الحد الأدنى للإصدار الإصدار التلقائي الملاحظات
Gradle 9.0.0 9.0.0 لمزيد من المعلومات، اطّلِع على تحديث Gradle.
أدوات تصميم حزمة تطوير البرامج (SDK) 36.0.0 36.0.0 ثبِّت أو اضبط أدوات تصميم حزمة تطوير البرامج (SDK).
NDK لا ينطبق 28.2.13676358 ثبِّت أو اضبط إصدارًا مختلفًا من NDK.
JDK 17 17 لمزيد من المعلومات، يُرجى الاطّلاع على ضبط إصدار JDK.

تتطلّب الآن عمليات التنفيذ الداخلية للغة DSL وواجهة برمجة التطبيقات المتوقّفة للنوع موافقة صريحة

يحتوي المكوّن الإضافي لنظام Gradle المتوافق مع Android الآن على مساحة واجهة برمجة تطبيقات محدّدة، مع تحديد واجهات برمجة التطبيقات المتوافقة في العنصر com.android.tools.build:gradle-api من Maven.

للتوافق مع المكوّنات الإضافية الثنائية الحالية وبرامج النصوص الخاصة بالإنشاء، ظلّت عمليات تنفيذ DSL السابقة التي تسبق مساحة واجهة برمجة التطبيقات المحدّدة متاحة تلقائيًا في الإصدار 8.13 والإصدارات الأقدم من "مكوّن Android الإضافي". يتيح ذلك للرمز البرمجي في مكوّنات Gradle الإضافية ونصوص الإصدار البرمجية الوصول إلى تفاصيل التنفيذ الداخلية للغة الخاصة بالمجال، بالإضافة إلى واجهات برمجة التطبيقات android.applicationVariants وandroid.libraryVariants وandroid.testVariants وandroid.unitTestVariants المتوقّفة نهائيًا، والتي ستتم إزالتها في عام 2026 في الإصدار 10.0 من "مكوّن Android الإضافي في Gradle".

لإبراز هذا الانتقال، لن يكون كلّ من واجهة برمجة التطبيقات القديمة الخاصة بمتغيرات الإصدار ونظام DSL الداخلي متاحًا تلقائيًا في الإصدار 9.0.0-alpha04 من المكوّن الإضافي لنظام Gradle المتوافق مع Android.

يمكنك إعادة تفعيل واجهة برمجة التطبيقات المتوقّفة نهائيًا من خلال ضبط android.newDsl=false في gradle.properties.

خلال سلسلة الإصدار الأوّلي 9.0، سنتواصل مع مطوّري المكوّنات الإضافية لمساعدتهم في تعديل المكوّنات الإضافية وإصدارها لتكون متوافقة تمامًا مع الأوضاع الجديدة، وسنحسّن "مساعد ترقية المكوّن الإضافي لنظام Android المتوافق مع Gradle" في "استوديو Android" لإرشادك خلال عملية نقل البيانات.

Kotlin المضمَّنة

يتضمّن الإصدار 9 من المكوّن الإضافي لنظام Android Gradle إمكانية مدمجة لتجميع لغة Kotlin، ما يحلّ محل المكوّن الإضافي للغة Kotlin الذي يتم تطبيقه بشكل منفصل. ويؤدي ذلك إلى تبسيط عملية الدمج مع "مكوّن Android Gradle الإضافي"، وتجنُّب استخدام واجهات برمجة التطبيقات المتوقّفة نهائيًا، وتحسين الأداء في بعض الحالات.

يحتوي الإصدار 9 من المكوّن الإضافي لنظام Gradle المتوافق مع Android على تبعية وقت التشغيل للإصدار 2.2.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Kotlin، وهو الحد الأدنى للإصدار المطلوب لتوفير دعم مدمج للغة Kotlin.

يمكنك إيقاف استخدام Kotlin المضمّنة من خلال ضبط android.builtInKotlin=false. إذا اخترت عدم استخدام الإصدار الجديد وكنت بحاجة أيضًا إلى استخدام إصدار قديم من مكوّن Gradle الإضافي للغة Kotlin، يمكنك فرض الرجوع إلى الإصدار القديم.

buildscript {
    dependencies {
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") {
            version { strictly("2.0.0") } // or another version that you want to use
        }
    }
}

تغييرات السلوك

يتضمّن الإصدار 9.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android السلوكيات الجديدة التالية:

السُلوك الاقتراح
يستخدم الإصدار 9.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android الإصدار r28c من NDK تلقائيًا. ننصحك بتحديد إصدار NDK الذي تريد استخدامه بشكل صريح.
يتطلّب الإصدار 9.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android تلقائيًا أن يستخدم مستهلكو المكتبة الإصدار نفسه أو إصدارًا أحدث من حزمة SDK الخاصة بالتجميع. استخدِم حزمة SDK للتدوين نفسها أو حزمة أحدث عند استخدام مكتبة. إذا لم يكن ذلك ممكنًا، أو إذا أردت منح مستخدمي المكتبة التي تنشرها وقتًا أطول للتبديل، اضبط قيمة AarMetadata.minCompileSdk بشكل صريح.

يتضمّن الإصدار 9.0 من "مكوّن Android الإضافي في Gradle" تعديلات على الإعدادات التلقائية لخصائص Gradle التالية. يمنحك ذلك خيار الحفاظ على سلوك الإصدار 8.13 من "منصة Google للتسويق" عند الترقية:

الخاصية الوظيفة التغيير من الإصدار 8.13 إلى الإصدار 9.0 من "مكوّن Android الإضافي في Gradle" الاقتراح
android.newDsl استخدِم واجهات DSL الجديدة بدون عرض عمليات التنفيذ القديمة لكتلة android.
يعني ذلك أيضًا أنّه لم يعُد بالإمكان الوصول إلى واجهة برمجة التطبيقات القديمة الخاصة ببيانات المنتج المتغيرة، مثل android.applicationVariants.
falsetrue يمكنك إيقاف هذا الخيار من خلال ضبط android.newDsl=false.
بعد التأكّد من توافق جميع المكوّنات الإضافية ومنطق الإنشاء الذي يستخدمه مشروعك، يمكنك إزالة خيار إيقاف الميزة.
android.builtInKotlin تم تفعيل إمكانية تجميع رموز Kotlin البرمجية مباشرةً في المكوّن الإضافي لنظام Gradle المتوافق مع Android، بدون المكوّن الإضافي org.jetbrains.kotlin.android. falsetrue استخدِم Kotlin المضمّنة من خلال إزالة استخدام المكوّن الإضافي org.jetbrains.kotlin.android إذا كان ذلك ممكنًا. إذا لم يكن كذلك، يمكنك إيقافه من خلال ضبط android.builtInKotlin=false
android.uniquePackageNames يفرض أن يكون لكل مكتبة اسم حزمة مميز. falsetrue حدِّد أسماء حِزم فريدة لجميع المكتبات ضِمن مشروعك. إذا لم يكن ذلك ممكنًا، يمكنك إيقاف هذه العلامة أثناء نقل البيانات.
android.dependency.useConstraints تتحكّم هذه السمة في استخدام قيود التبعية بين عمليات الإعداد.
الإعداد التلقائي في الإصدار 9.0 من "مكوّن Android الإضافي في Gradle" هو false الذي يستخدم القيود فقط في اختبارات أجهزة التطبيق (AndroidTest). سيؤدي ضبط هذا الخيار على true إلى الرجوع إلى السلوك السابق في الإصدار 8.13.
truefalse لا تستخدِم قيود التبعية في كل مكان ما لم تكن بحاجة إليها. يؤدي قبول القيمة التلقائية الجديدة لهذا الخيار إلى تفعيل عمليات التحسين في عملية استيراد المشاريع، ما يؤدي إلى تقليل وقت الاستيراد لعمليات الإنشاء التي تتضمّن العديد من المشاريع الفرعية لمكتبة Android.
aandroid.enableAppCompileTimeRClass تجميع الرموز البرمجية في التطبيقات مع فئة R غير نهائية، ما يؤدي إلى تجميع التطبيقات بشكل متوافق مع تجميع المكتبات
يؤدي ذلك إلى تحسين الزيادة ويُمهّد الطريق لإجراء تحسينات مستقبلية على الأداء في ما يتعلّق بتدفق معالجة الموارد.
falsetrue يمكن للعديد من المشاريع اعتماد السلوك الجديد بدون إجراء أي تغييرات على المصدر. إذا تم استخدام حقول الفئة R في أي مكان يتطلّب قيمة ثابتة، مثل حالات التبديل، أعِد تصميم الرمز البرمجي لاستخدام عبارات if متسلسلة.
android.sdk.defaultTargetSdkToCompileSdkIfUnset يستخدم إصدار حزمة SDK المخصّص للتجميع كقيمة تلقائية لإصدار حزمة SDK المستهدَف في التطبيقات والاختبارات.
قبل هذا التغيير، كان إصدار حزمة SDK المستهدَف يتم ضبطه تلقائيًا على إصدار حزمة SDK الأدنى.
falsetrue حدِّد إصدار حزمة SDK المستهدَف بشكلٍ صريح للتطبيقات والاختبارات.
android.onlyEnableUnitTestForTheTestedBuildType لا ينشئ سوى مكوّنات اختبار الوحدة لنوع الإصدار الذي تم اختباره.
في المشروع التلقائي، يؤدي ذلك إلى إنشاء اختبار وحدة واحد لتصحيح الأخطاء، بينما كان السلوك السابق هو تشغيل اختبارات الوحدات لتصحيح الأخطاء أو الإصدار.
falsetrue إذا كان مشروعك لا يتطلّب إجراء اختبارات لكل من إصدارات تصحيح الأخطاء والإصدارات العلنية، لن تحتاج إلى إجراء أي تغيير.
android.proguard.failOnMissingFiles تعذُّر الإنشاء مع ظهور خطأ إذا لم تكن أي من ملفات الاحتفاظ المحدّدة في AGP DSL متوفّرة على القرص قبل هذا التغيير، كانت الأخطاء الإملائية في أسماء الملفات تؤدي إلى تجاهل الملفات بدون إشعار. falsetrue إزالة أي بيانات غير صالحة لملفات Proguard
android.r8.optimizedResourceShrinking تتيح هذه السمة لبرنامج R8 الاحتفاظ بعدد أقل من موارد Android من خلال أخذ الفئات وموارد Android في الاعتبار معًا. falsetrue إذا كانت قواعد الاحتفاظ بمشروعك مكتملة، ليس عليك إجراء أي تغيير.
android.r8.strictFullModeForKeepRules تسمح أداة R8 بالاحتفاظ بعدد أقل من العناصر من خلال عدم الاحتفاظ بشكل ضمني بالدالة الإنشائية التلقائية عند الاحتفاظ بفئة. أي أنّ -keep class A لم يعُد يعني -keep class A { <init>(); }
falsetrue إذا كانت قواعد الاحتفاظ بمشروعك مكتملة، ليس عليك إجراء أي تغيير.

استبدِل -keep class A بالقيمة -keep class A { <init>(); } في قواعد الاحتفاظ الخاصة بمشروعك في أي حالات تحتاج فيها إلى الاحتفاظ بالدالة الإنشائية التلقائية.
android.defaults.buildfeatures.shaders تتيح هذه السمة تجميع برامج التظليل في جميع المشاريع الفرعية truefalse فعِّل تجميع برامج التظليل في المشاريع الفرعية التي تحتوي على برامج تظليل فقط ليتم تجميعها من خلال ضبط ما يلي في ملفات إنشاء Gradle الخاصة بهذه المشاريع:
android {
  buildFeatures {
    shaders = true
  }
}

الميزات التي تمت إزالتها

يزيل الإصدار 9.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android الوظائف التالية:

تغيير DSL

يتضمّن الإصدار 9.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android تغييرات DSL التالية التي تؤدي إلى إيقاف بعض الوظائف:

  • تمت إزالة تحديد المَعلمات الخاص بـ CommonExtension.

    في حد ذاته، هذا التغيير هو تغيير غير متوافق على مستوى المصدر فقط للمساعدة في تجنُّب التغييرات غير المتوافقة المستقبلية على مستوى المصدر، ولكنّه يعني أيضًا أنّه يجب نقل طرق الحظر من CommonExtension إلى ApplicationExtension وLibraryExension وDynamicFeatureExtension وTestExtension.

    عند ترقية مشروعك إلى الإصدار 9.0 من "مكوّن Android الإضافي في Gradle"، أعِد تصميم رمز المكوّن الإضافي في Gradle الذي يستخدم هذه المَعلمات أو طرق الحظر. على سبيل المثال، تم تعديل المكوّن الإضافي التالي لإزالة المَعلمة "النوع" وعدم الاعتماد على طرق الحظر التي تمت إزالتها:

    AGP 8.13

    val commonExtension: CommonExtension<*, *, *, *, *, *> =
            extensions.getByType(CommonExtension::class)
    commonExtension.apply {
        defaultConfig {
            minSdk {
                version = release(28)
            }
        }
    }
    

    AGP 9.0

    val commonExtension: CommonExtension =
            extensions.getByType(CommonExtension::class)
    commonExtension.apply {
        defaultConfig.apply {
            minSdk {
                version = release(28)
            }
        }
    }
    

    بالنسبة إلى المكوّنات الإضافية التي تستهدف مجموعة من إصدارات المكوّن الإضافي لنظام Gradle المتوافق مع Android، يكون استخدام الدالة getter مباشرةً متوافقًا مع إصدارات المكوّن الإضافي لنظام Gradle المتوافق مع Android الأقدم من الإصدار 9.0.

إزالة DSL

يزيل الإصدار 9.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android ما يلي:

إزالة خصائص Gradle

تمت إضافة خصائص Gradle التالية في البداية كطرق لإيقاف الميزات التي تم تفعيلها تلقائيًا على مستوى العالم.

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

الخاصية الوظيفة الاستبدال
android.defaults.buildfeatures.aidl تتيح هذه السمة تجميع AIDL في جميع المشاريع الفرعية فعِّل تجميع AIDL في المشاريع الفرعية التي تتضمّن مصادر AIDL فقط، وذلك من خلال ضبط السمة التالية في ملفات تصميم Gradle الخاصة بهذه المشاريع:
android {
  buildFeatures {
    aidl = true
  }
}
في ملف تصميم Gradle لكل مشروع فرعي يحتوي على مصادر AIDL
android.defaults.buildfeatures.renderscript تتيح تجميع RenderScript في جميع المشاريع الفرعية فعِّل تجميع renderscript في المشاريع الفرعية التي تتضمّن مصادر renderscript فقط، وذلك من خلال ضبط السمة التالية في ملفات Gradle الخاصة بتلك المشاريع:
android {
  buildFeatures {
    renderScript = true
  }
}

واجهات برمجة التطبيقات التي تمت إزالتها

يزيل الإصدار 9.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android ما يلي:

  • واجهات برمجة التطبيقات BaseExtension.registerTransform المتوقّفة نهائيًا وغير المفعّلة، والتي تم الإبقاء عليها فقط للسماح بالتجميع باستخدام أحدث إصدار من "مكوّن Android الإضافي" مع استهداف الإصدار 4.2 أو الإصدارات الأقدم من "مكوّن Android الإضافي".

خصائص Gradle الإلزامية

يُظهر الإصدار 9.0 من "مكوّن Android الإضافي في Gradle" خطأً إذا ضبطت خصائص Gradle التالية.

لن يرقّي مساعد ترقية المكوّن الإضافي لنظام Gradle المتوافق مع Android المشاريع إلى الإصدار 9.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android التي تستخدم هذه الخصائص.

الخاصية الوظيفة
android.r8.integratedResourceShrinking يتم الآن دائمًا تنفيذ عملية تصغير حجم الموارد كجزء من R8، وتمت إزالة التنفيذ السابق.