تحتوي هذه الصفحة على ملاحظات إصدار للإصدارات التجريبية من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" (AGP).
الإصدار 9.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
الإصدار 9.0 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" هو إصدار رئيسي جديد من هذا المكوّن، ويتضمّن تغييرات في واجهة برمجة التطبيقات والسلوك.
للتحديث إلى الإصدار 9.0.0-beta04 من المكوّن الإضافي لنظام Gradle المتوافق مع Android، استخدِم مساعد ترقية المكوّن الإضافي لنظام Android Gradle في الإصدار 3 من تحديثات Android Studio Otter | 2025.2.3.
يساعد "مساعد ترقية" Android Gradle Plugin في الحفاظ على السلوكيات الحالية عند ترقية مشروعك عند الحاجة، ما يتيح لك ترقية مشروعك لاستخدام الإصدار 9.0 من Android Gradle Plugin، حتى إذا لم تكن مستعدًا لاستخدام جميع الإعدادات التلقائية الجديدة في الإصدار 9.0 من المكوّن الإضافي Android Gradle.
التوافق
الحدّ الأقصى لمستوى واجهة برمجة تطبيقات Android الذي يتوافق معه الإصدار 9.0.0-beta04 من المكوّن الإضافي لنظام Gradle المتوافق مع Android هو المستوى 36 لواجهة برمجة التطبيقات.
يتطلّب الإصدار 9.0.0-beta04 من المكوّن الإضافي لنظام Gradle المتوافق مع Android استخدام الإصدار 9.0.0 من Gradle.
| الإصدار الأدنى | الإصدار التلقائي | الملاحظات | |
|---|---|---|---|
| Gradle | 9.1.0 | 9.1.0 | لمزيد من المعلومات، اطّلِع على تحديث Gradle. |
| أدوات تصميم حزمة تطوير البرامج (SDK) | 36.0.0 | 36.0.0 | تثبيت أو ضبط أدوات إنشاء حزمة تطوير البرامج (SDK). |
| NDK | لا ينطبق | 28.2.13676358 | تثبيت أو ضبط إصدار مختلف من NDK |
| JDK | 17 | 17 | لمزيد من المعلومات، يُرجى الاطّلاع على ضبط إصدار JDK. |
تنفّذ فئات android DSL الآن الواجهات العامة الجديدة فقط
على مدار السنوات العديدة الماضية، طرحنا
واجهات جديدة للغة DSL وواجهة برمجة التطبيقات من أجل
التحكّم بشكل أفضل في واجهات برمجة التطبيقات المتاحة للجميع. كانت إصدارات AGP 7.x و8.x لا تزال تستخدم أنواع DSL القديمة (مثل BaseExtension) التي كانت تنفّذ أيضًا الواجهات العامة الجديدة، وذلك للحفاظ على التوافق أثناء تقدّم العمل على الواجهات.
يستخدم الإصدار 9.0 من AGP واجهات DSL الجديدة حصريًا، وتم تغيير عمليات التنفيذ إلى أنواع جديدة مخفية بالكامل. يؤدي ذلك أيضًا إلى إزالة إذن الوصول إلى واجهة برمجة التطبيقات القديمة والمتوقّفة نهائيًا الخاصة ببيانات المنتج المتغيرة.
لتحديث إصدار "استوديو Android" إلى 9.0، قد تحتاج إلى إجراء ما يلي:
- تأكَّد من أنّ مشروعك متوافق مع Kotlin المضمّن: لا يتوافق المكوّن الإضافي
org.jetbrains.kotlin.androidمع DSL الجديد. تبديل مشاريع KMP إلى المكوّن الإضافي لمكتبة Android Gradle المتوافق مع KMP: لا يتوافق استخدام المكوّن الإضافي
org.jetbrains.kotlin.multiplatformفي المشروع الفرعي نفسه لنظام Gradle مع المكوّنين الإضافيينcom.android.libraryوcom.android.applicationمع نظام DSL الجديد.تعديل ملفات الإصدار: على الرغم من أنّ الهدف من تغيير الواجهات هو الحفاظ على تشابه لغة DSL قدر الإمكان، قد تحدث بعض التغييرات الصغيرة.
تعديل منطق الإصدار المخصّص للإشارة إلى نظام DSL وواجهة برمجة التطبيقات الجديدَين: استبدِل أي إشارات إلى نظام DSL الداخلي بواجهات نظام DSL العامة. في معظم الحالات، سيكون هذا الاستبدال واحدًا مقابل واحد. استبدِل أي استخدام لواجهة برمجة التطبيقات
applicationVariantsوواجهات برمجة التطبيقات المشابهة بواجهة برمجة التطبيقات الجديدةandroidComponents. قد يكون ذلك أكثر تعقيدًا، لأنّ واجهة برمجة التطبيقاتandroidComponentsمصمَّمة لتكون أكثر استقرارًا من أجل الحفاظ على توافق المكوّنات الإضافية لفترة أطول. يمكنك الاطّلاع على وصفات Gradle للحصول على أمثلة.تحديث المكوّنات الإضافية التابعة لجهات خارجية: قد تعتمد بعض المكوّنات الإضافية التابعة لجهات خارجية على واجهات أو واجهات برمجة تطبيقات لم يعُد يتم عرضها. انتقِل إلى إصدارات من هذه المكوّنات الإضافية متوافقة مع الإصدار 9.0 من "مكوّن Android الإضافي في Gradle".
يمنع التبديل إلى واجهات DSL الجديدة المكوّنات الإضافية وبرامج Gradle النصية للإنشاء من استخدام واجهات برمجة التطبيقات المتوقّفة نهائيًا، بما في ذلك:
واجهة برمجة التطبيقات المتوقّفة نهائيًا في الحزمة android |
الوظيفة | الاستبدال |
|---|---|---|
applicationVariants وlibraryVariants وtestVariants وunitTestVariants
|
نقاط الإضافة التي يمكن للمكوّنات الإضافية استخدامها لإضافة وظائف جديدة إلى "مكوّن Android الإضافي في Gradle" |
استبدِلها بواجهة برمجة التطبيقات
androidComponents.onVariants
، على سبيل المثال:
androidComponents { onVariants() { variant -> variant.signingConfig .enableV1Signing.set(false) } } |
variantFilter
|
تتيح إيقاف الصيغ المحدّدة. |
استبدِلها بواجهة برمجة التطبيقات
androidComponents.beforeVariants
، على سبيل المثال:
androidComponents { beforeVariants( selector() .withBuildType("debug") .withFlavor("color", "blue") ) { variantBuilder -> variantBuilder.enable = false } } |
deviceProvider وtestServer
|
تسجيل بيئات اختبار مخصّصة لإجراء الاختبارات على أجهزة Android والمحاكيات | انتقِل إلى الأجهزة المُدارة من Gradle. |
sdkDirectory،ndkDirectory،bootClasspath،adbExecutable، وadbExe
|
استخدام مكوّنات مختلفة من حزمة تطوير البرامج (SDK) لنظام التشغيل Android لتنفيذ مهام مخصّصة |
التبديل إلى
androidComponents.sdkComponents
|
registerArtifactType وregisterBuildTypeSourceProvider وregisterProductFlavorSourceProvider وregisterJavaArtifact وregisterMultiFlavorSourceProvider وwrapJavaSourceSet |
وظائف قديمة ذات صلة في الغالب بمعالجة المصادر التي تم إنشاؤها في "استوديو Android"، والتي توقّفت عن العمل في الإصدار 7.2.0 من "مكوّن Android الإضافي لنظام Gradle". | لا يتوفّر بديل مباشر لواجهات برمجة التطبيقات هذه. |
dexOptions
|
إعدادات قديمة ذات صلة بالأداة dx، والتي تم استبدالها بالأداة d8. لم يكن لأي من الإعدادات أي تأثير منذ الإصدار 7.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android.
|
لا يوجد بديل مباشر. |
generatePureSplits
|
إنشاء حِزم إعدادات للتطبيقات الفورية | أصبحت إمكانية تقسيم عمليات الإعداد مضمّنة الآن في حِزم تطبيقات Android. |
aidlPackagedList
|
ملفات AIDL التي سيتم تضمينها في ملف AAR لعرضها كواجهة برمجة تطبيقات للمكتبات والتطبيقات التي تعتمد على هذه المكتبة |
لا يزال هذا الحقل مكشوفًا على
LibraryExtension
ولكن ليس على أنواع الإضافات الأخرى.
|
إذا تم التحديث إلى الإصدار 9.0 من AGP وظهرت رسالة الخطأ التالية، يعني ذلك أنّ مشروعك لا يزال يشير إلى بعض الأنواع القديمة:
java.lang.ClassCastException: class com.android.build.gradle.internal.dsl.ApplicationExtensionImpl$AgpDecorated_Decorated
cannot be cast to class com.android.build.gradle.BaseExtension
إذا تم حظرك بسبب مكوّنات إضافية غير متوافقة تابعة لجهات خارجية، يمكنك إيقافها واستعادة عمليات التنفيذ القديمة للغة DSL، بالإضافة إلى واجهة برمجة التطبيقات القديمة الخاصة بإنشاء المتغيرات.
في الوقت نفسه، ستتوفّر الواجهات الجديدة، وسيظل بإمكانك تعديل منطق الإصدار الخاص بك ليناسب واجهة برمجة التطبيقات الجديدة. لإيقاف هذه الميزة، أدرِج السطر التالي في ملف gradle.properties:
android.newDsl=false
يمكنك أيضًا البدء في الترقية إلى واجهات برمجة التطبيقات الجديدة قبل الترقية إلى الإصدار 9.0 من Android Gradle Plugin. تتوفّر الواجهات الجديدة في العديد من إصدارات "مكوّن Android الإضافي لبرنامج Gradle"، لذا يمكنك استخدام مزيج من الواجهات الجديدة والقديمة. تعرض مستندات مرجع واجهة برمجة التطبيقات الخاصة بالمكوّن الإضافي لنظام Gradle المتوافق مع Android مساحة واجهة برمجة التطبيقات لكل إصدار من المكوّن الإضافي لنظام Gradle المتوافق مع Android، وتاريخ إضافة كل فئة وطريقة وحقل.
خلال مرحلة الإصدار الأوّلي من الإصدار 9.0، سنتواصل مع مطوّري المكوّنات الإضافية لمساعدتهم في تكييف مكوّناتهم الإضافية وإصدارها لتكون متوافقة تمامًا مع الأوضاع الجديدة، وسنحسّن "مساعد ترقية" Android Gradle Plugin في "استوديو Android" لإرشادك خلال عملية نقل البيانات.
إذا تبيّن لك أنّ واجهة برمجة التطبيقات الجديدة DSL أو Variant API لا تتضمّن إمكانات أو ميزات، يُرجى تسجيل مشكلة في أقرب وقت ممكن.
ميزات Kotlin المضمَّنة
يوفّر الإصدار 9.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android إمكانية استخدام لغة Kotlin المضمّنة ويفعّلها تلقائيًا. وهذا يعني أنّه لم يعُد عليك تطبيق المكوّن الإضافي
org.jetbrains.kotlin.android (أو kotlin-android) في ملفات الإصدار
لتجميع ملفات مصدر Kotlin.
يؤدي ذلك إلى تبسيط عملية دمج Kotlin مع AGP وتجنُّب استخدام واجهات برمجة التطبيقات المتوقّفة نهائيًا وتحسين الأداء في بعض الحالات.
لذلك، عند ترقية مشروعك إلى الإصدار 9.0 من Android Gradle Plugin، عليك أيضًا نقل البيانات إلى Kotlin المضمّنة أو إيقافها.
يمكنك أيضًا إيقاف ميزة التوافق المضمّنة مع Kotlin بشكل انتقائي لمشاريع Gradle الفرعية التي لا تتضمّن مصادر Kotlin.
الاعتماد على المكوّن الإضافي لنظام Gradle المتوافق مع Kotlin في وقت التشغيل
لتوفير إمكانية استخدام Kotlin المضمّنة، يتضمّن الإصدار 9.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android الآن تبعية وقت التشغيل على الإصدار 2.2.10 من المكوّن الإضافي لنظام Gradle المتوافق مع Kotlin (KGP). هذا يعني أنّه لن يكون عليك تحديد إصدار KGP، وإذا كنت تستخدم إصدارًا أقدم من 2.2.10، سيتم تلقائيًا ترقية إصدار KGP إلى 2.2.10. وبالمثل، إذا كنت تستخدم إصدارًا من KSP أقل من 2.2.10-2.0.2، سيتم ترقيته إلى 2.2.10-2.0.2 ليتوافق مع إصدار KGP.
الترقية إلى إصدار أعلى من KGP
لاستخدام إصدار أحدث من KGP أو KSP، أضِف ما يلي إلى ملف الإنشاء ذي المستوى الأعلى:
buildscript {
dependencies {
// For KGP
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:KGP_VERSION")
// For KSP
classpath("com.google.devtoolsksp:symbol-processing-gradle-plugin:KSP_VERSION")
}
}
الرجوع إلى إصدار KGP أقدم
لا يمكنك الرجوع إلى إصدار أقدم من KGP إلا إذا أوقفت استخدام Kotlin المضمّنة. ويرجع ذلك إلى أنّ الإصدار 9.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android يتيح استخدام Kotlin المضمّنة تلقائيًا، وتتطلّب Kotlin المضمّنة الإصدار 2.2.10 من المكوّن الإضافي لنظام Gradle المتوافق مع Kotlin أو إصدارًا أحدث.
لاستخدام إصدار أقل من KGP أو KSP، عليك تعريف هذا الإصدار في ملف الإصدار ذي المستوى الأعلى باستخدام تعريف إصدار دقيق:
buildscript {
dependencies {
// For KGP
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") {
version { strictly("KGP_VERSION") }
}
// For KSP
classpath("com.google.devtoolsksp:symbol-processing-gradle-plugin") {
version { strictly("KSP_VERSION") }
}
}
}
يُرجى العِلم أنّ الحدّ الأدنى لإصدار KGP الذي يمكنك الرجوع إليه هو 2.0.0.
توافق بيئة التطوير المتكاملة مع عناصر الاختبار الثابتة
يتيح الإصدار 9.0 من "مكوّن Android الإضافي لنظام Gradle" استخدام أدوات الاختبار في بيئة التطوير المتكاملة (IDE) في "استوديو Android".
المكوّن الإضافي "المكتبة المدمجة"
يتيح لك Fused Library Plugin (إصدار تجريبي) نشر مكتبات متعددة كملف Android Library AAR واحد. ويمكن أن يسهّل ذلك على المستخدمين الاعتماد على العناصر المنشورة.
للحصول على معلومات حول كيفية البدء، يُرجى الاطّلاع على نشر عدّة مكتبات Android كحزمة واحدة باستخدام Fused Library.
تغييرات السلوك
يتضمّن الإصدار 9.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android السلوكيات الجديدة التالية:
| السُلوك | الاقتراح |
|---|---|
يستخدم الإصدار 9.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android الإصدار r28c من NDK تلقائيًا.
|
ننصحك بتحديد إصدار NDK الذي تريد استخدامه بشكل صريح. |
| يتطلّب الإصدار 9.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android تلقائيًا أن يستخدم مستهلكو المكتبة الإصدار نفسه أو إصدارًا أحدث من حزمة SDK الخاصة بالتجميع. |
استخدِم حزمة SDK للتدوين نفسها أو حزمة أحدث عند استخدام مكتبة.
إذا لم يكن ذلك ممكنًا، أو إذا أردت منح مستخدمي المكتبة التي تنشرها وقتًا أطول للتبديل، اضبط AarMetadata.minCompileSdk بشكل صريح.
|
يتضمّن الإصدار 9.0 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" تعديلات على الإعدادات التلقائية لخصائص Gradle التالية. يمنحك ذلك خيار الحفاظ على سلوك الإصدار 8.13 من AGP عند الترقية:
| الخاصية | الوظيفة | التغيير من الإصدار 8.13 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" إلى الإصدار 9.0 | الاقتراح |
|---|---|---|---|
android. |
استخدِم واجهات DSL الجديدة بدون عرض عمليات التنفيذ القديمة لكتلة android.يعني هذا أيضًا أنّه لم يعُد بالإمكان الوصول إلى واجهة برمجة التطبيقات القديمة الخاصة بمتغيرات المنتجات، مثل android.applicationVariants.
|
false ← true |
يمكنك إيقاف هذه الميزة من خلال ضبط
android.newDsl=false.بعد التأكّد من توافق جميع المكوّنات الإضافية ومنطق الإنشاء الذي يستخدمه مشروعك، يمكنك إزالة خيار إيقاف الميزة. |
android. |
تفعيل Kotlin المضمّنة | false ← true |
انتقِل إلى Kotlin المضمّنة إذا كان ذلك ممكنًا أو أوقِفها. |
android. |
يفرض أن يكون لكل مكتبة اسم حزمة مميز. | false ← true |
حدِّد أسماء حِزم فريدة لجميع المكتبات ضِمن مشروعك. إذا لم يكن ذلك ممكنًا، يمكنك إيقاف هذه العلامة أثناء نقل البيانات. |
android. |
استخدِم تبعيات androidx
تلقائيًا.
|
false ← true |
استخدام تبعيات androidx
|
android. |
يمكنك إجراء الاختبارات على الجهاز باستخدام الفئة
androidx.test.runner.AndroidJUnitRunner
تلقائيًا، ما يؤدي إلى استبدال الإعداد التلقائي للفئة المتوقّفة نهائيًا
InstrumentationTestRunner
بالفئة
android {
defaultConfig {
testInstrumentationRunner = "..."
}
} |
false ← true |
استخدِم
AndroidJUnitRunner،
أو حدِّد testInstrumentationRunner المخصّص بشكل صريح.
|
android. |
تتحكّم هذه السمة في استخدام قيود التبعية بين عمليات الإعداد. الإعداد التلقائي في الإصدار 9.0 من "مكوّن Android الإضافي في Gradle" هو false الذي يستخدم القيود فقط في اختبارات أجهزة التطبيق (AndroidTest).
سيؤدي ضبط هذا الخيار على true إلى الرجوع إلى السلوك السابق في الإصدار 8.13.
|
true ← false |
لا تستخدِم قيود التبعية في كل مكان ما لم تكن بحاجة إليها. يؤدي قبول القيمة التلقائية الجديدة لهذا الخيار إلى تفعيل عمليات التحسين في عملية استيراد المشاريع، ما يؤدي إلى تقليل وقت الاستيراد لعمليات الإنشاء التي تتضمّن العديد من المشاريع الفرعية لمكتبة Android. |
android. |
تجميع الرموز البرمجية في التطبيقات مع فئة R غير نهائية، ما يؤدي إلى
تجميع التطبيقات بشكل متوافق مع تجميع المكتبات يؤدي ذلك إلى تحسين الزيادة في المبيعات ويمهّد الطريق لتحسينات الأداء المستقبلية في ما يتعلّق بتدفق معالجة الموارد. |
false ← true |
يمكن للعديد من المشاريع اعتماد السلوك الجديد بدون إجراء أي تغييرات على المصدر. إذا تم استخدام حقول الفئة R في أي مكان يتطلّب قيمة ثابتة، مثل حالات التبديل، أعِد تصميم الرمز البرمجي لاستخدام عبارات if متسلسلة. |
android. |
يستخدم إصدار حزمة SDK المخصّص للتجميع كقيمة تلقائية لإصدار حزمة SDK المستهدَف في التطبيقات والاختبارات. قبل هذا التغيير، كان إصدار حزمة SDK المستهدَف يتم ضبطه تلقائيًا على إصدار حزمة SDK كحد أدنى. |
false ← true |
حدِّد إصدار حزمة SDK المستهدَف بشكلٍ صريح للتطبيقات والاختبارات. |
android. |
لا ينشئ سوى مكوّنات اختبار الوحدة لنوع الإصدار الذي تم اختباره. في المشروع التلقائي، يؤدي ذلك إلى اختبار وحدة واحد للتصحيح، بينما كان السلوك السابق هو إجراء اختبارات الوحدات للتصحيح أو الإصدار. |
false ← true |
إذا كان مشروعك لا يتطلّب إجراء اختبارات لكل من تصحيح الأخطاء والإصدار، لا يلزم إجراء أي تغيير. |
android. |
تعذُّر الإنشاء مع ظهور خطأ إذا لم تكن أي من ملفات الاحتفاظ المحدّدة في AGP DSL متوفّرة على القرص قبل هذا التغيير، كانت الأخطاء الإملائية في أسماء الملفات تؤدي إلى تجاهل الملفات بدون إشعار. | false ← true |
إزالة أي بيانات غير صالحة لملفات Proguard |
android. |
يسمح هذا الخيار لبرنامج R8 بالاحتفاظ بعدد أقل من موارد Android من خلال أخذ الفئات وموارد Android في الاعتبار معًا. | false ← true |
إذا كانت قواعد الاحتفاظ بمشروعك مكتملة، ليس عليك إجراء أي تغيير. |
android. |
تسمح أداة R8 بالاحتفاظ بعدد أقل من خلال عدم الاحتفاظ بشكل ضِمني بالدالة الإنشائية التلقائية عند الاحتفاظ بفئة.
أي أنّ -keep class A لم يعُد يعني
-keep class A { <init>(); } |
false ← true |
إذا كانت قواعد الاحتفاظ بمشروعك مكتملة، ليس عليك إجراء أي تغيير.
استبدِل -keep class A
بالقيمة
-keep class A { <init>(); }
في قواعد الاحتفاظ الخاصة بمشروعك في أي حالات تحتاج فيها إلى الاحتفاظ بالدالة الإنشائية التلقائية.
|
android. |
تفعيل
resValues
في جميع المشاريع الفرعية
|
true ← false |
فعِّل resValues في المشاريع الفرعية التي تحتاج إليها فقط من خلال ضبط ما يلي في ملفات إنشاء Gradle الخاصة بهذه المشاريع:
android {
buildFeatures {
resValues = true
}
} |
android. |
تتيح هذه السمة تجميع برامج التظليل في جميع المشاريع الفرعية | true ← false |
فعِّل تجميع برامج التظليل في المشاريع الفرعية التي تحتوي على برامج تظليل فقط ليتم تجميعها من خلال ضبط ما يلي في ملفات إنشاء Gradle الخاصة بهذه المشاريع:
android {
buildFeatures {
shaders = true
}
} |
android. |
في الإصدار 9.0 من "مكوّن Android الإضافي لنظام Gradle"، لن تتوافق getDefaultProguardFile() إلا مع proguard-android-optimize.txt بدلاً من proguard-android.txt. يتم ذلك لمنع الاستخدام غير المقصود للعلامة dontoptimize، والتي يتم تضمينها في proguard-android.txt.
|
false ← true |
يمكنك تحديد dontoptimize بشكلٍ صريح في ملف proguardFile مخصّص إذا أردت تجنُّب التحسين، بالإضافة إلى استخدام proguard-android-optimize.txt. احرص على إزالة العلامة dontoptimize من هذا الملف إذا أمكن، لأنّها تقلّل من مزايا التحسين في R8. إذا لم يكن كذلك، أوقِف هذا الخيار من خلال ضبط android.r8.globalOptionsInConsumerRules.disallowed=false.
|
android. |
اعتبارًا من الإصدار 9.0 من Android Gradle Plugin، سيتعذّر نشر مكتبة Android ووحدة الميزات إذا كانت ملفات الاحتفاظ بالمستهلك تحتوي على إعدادات Proguard مسبِّبة للمشاكل. يجب استخدام ملفات Consumer keep التي تتضمّن خيارات عامة، مثل dontoptimize أو dontobfuscate، في وحدات التطبيق فقط، ويمكن أن تقلّل من مزايا التحسين لمستخدمي المكتبة. سيتجاهل تجميع وحدة تطبيق Android أي خيارات عامة من هذا النوع بدون إشعار إذا كانت مضمّنة في عنصر تابع مجمَّع مسبقًا (ملف JAR أو AAR). يمكنك معرفة وقت حدوث ذلك من خلال التحقّق من ملف configuration.txt (عادةً في مسار مثل <app_module>/build/outputs/mapping/<build_variant>/configuration.txt) بحثًا عن تعليقات مثل: # REMOVED CONSUMER RULE: dontoptimize
|
false ← true |
على المكتبات المنشورة إزالة أي قواعد غير متوافقة. يجب أن تنقل المكتبات الداخلية أي قواعد غير متوافقة ولكنها مطلوبة إلى ملف Proguard في وحدة تطبيق بدلاً من ذلك. يمكنك إيقاف هذه الميزة من خلال الإعدادات android.r8.globalOptionsInConsumerRules.disallowed=false. بعد أن تصبح جميع ملفات المستهلكين المتوافقة، أزِل خيار إيقاف المشاركة.
|
android. |
عدم السماح بتمرير موفّري البيانات للمصادر التي تم إنشاؤها باستخدام
AndroidSourceSet
DSL.
|
false ← true |
استخدِم واجهة برمجة التطبيقات
Sources
على androidComponents لتسجيل المستندات المصدر التي تم إنشاؤها.
|
android. |
يجب ضبط مسار برنامج تجميع التظليل بشكل صريح في
local.properties
في حال تفعيل تجميع التظليل.
|
false ← true |
أضِف glslc.dir=/path/to/shader-tools إلى local.properties في مشروعك.
|
الميزات التي تمت إزالتها
يزيل الإصدار 9.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android الوظائف التالية:
- إيقاف إمكانية تضمين تطبيقات Wear OS
يزيل الإصدار 9.0 من "مكوّن Android الإضافي لبرنامج Gradle" إمكانية تضمين تطبيقات Wear OS، والتي لم تعُد متاحة في Play. ويشمل ذلك إزالة إعداداتwearAppوAndroidSourceSet.wearAppConfigurationNameDSL. اطّلِع على مقالة التوزيع على Wear OS لمعرفة كيفية نشر تطبيقك على Wear OS. - مهمة الإبلاغ عن
androidDependenciesوsourceSets - إيقاف إتاحة حِزم APK المجزّأة حسب كثافة الشاشة
في الإصدار 9.0 من "مكوّن Android الإضافي في Gradle"، تم إيقاف إمكانية إنشاء حِزم APK مجزّأة استنادًا إلى كثافة الشاشة. تمت إزالة الوظيفة وواجهات برمجة التطبيقات ذات الصلة. لتقسيم حِزم APK استنادًا إلى كثافة الشاشة باستخدام الإصدار 9.0 أو إصدار أحدث من "مكوّن Android الإضافي في Gradle"، استخدِم حِزم التطبيقات.
تغيير DSL
يتضمّن الإصدار 9.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android تغييرات غير متوافقة في DSL على النحو التالي:
تمت إزالة تحديد المَعلمات الخاص بـ
CommonExtension.في حد ذاته، هذا التغيير هو تغيير غير متوافق على مستوى المصدر فقط للمساعدة في تجنُّب التغييرات غير المتوافقة المستقبلية على مستوى المصدر، ولكنّه يعني أيضًا أنّه يجب نقل طرق الحظر من
CommonExtensionإلىApplicationExtensionوLibraryExtensionوDynamicFeatureExtensionوTestExtension.عند ترقية مشروعك إلى الإصدار 9.0 من Android Gradle Plugin، عليك إعادة تصميم رمز المكوّن الإضافي 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) } } }بالنسبة إلى المكوّنات الإضافية التي تستهدف نطاقًا من إصدارات "المكوّن الإضافي لنظام Android Gradle"، يكون استخدام الدالة getter مباشرةً متوافقًا مع إصدارات "المكوّن الإضافي لنظام Android Gradle" الأقل من 9.0.
تمت إزالة DSL
يزيل الإصدار 9.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android ما يلي:
AndroidSourceSet.jni، لأنّها لم تكن تعمل.AndroidSourceSet.wearAppConfigurationName، في ما يتعلق بإيقاف ميزة التطبيقات المضمّنة على Wear OS.BuildType.isRenderscriptDebuggable، لأنّها لم تكن تعمل.DependencyVariantSelection. تم استبداله بـDependencySelection، والذي يتم عرضه على نحوkotlin.android.localDependencySelectionInstallation.installOptions(String). تم استبداله بالسمة القابلة للتعديلInstallation.installOptions.الكتلة التجريبية
PostProcessingالتي لم يتم تثبيتها أبدًاProductFlavor.setDimension، والتي تم استبدالها بالسمةdimensionLanguageSplitOptions، الذي كان مفيدًا فقط في تطبيقات Google Play الفورية، والتي تم إيقافها نهائيًا.DensitySplit، لأنّ هذه الميزة لم تعُد متاحة. والبديل هو استخدام حِزم التطبيقات.
واجهات برمجة التطبيقات التي تمت إزالتها
يزيل الإصدار 9.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android ما يلي:
AndroidComponentsExtension.finalizeDSl. تم استبداله بـfinalizeDslComponent.transformClassesWith. تم استبداله بـInstrumentation.transformClassesWithComponent.setAsmFramesComputationMode. تم استبداله بـInstrumentation.setAsmFramesComputationModeComponentBuilder.enabled. تم استبداله بـComponentBuilder.enable.DependenciesInfoBuilder.includedInApk. تم استبداله بـincludeInApkDependenciesInfoBuilder.includedInBundle. تم استبداله بـincludeInBundleGeneratesApk.targetSdkVersion. تم استبداله بـtargetSdkVariant.minSdkVersion. تم استبداله بـminSdkVariant.maxSdkVersion. تم استبداله بـmaxSdkVariant.targetSdkVersion. تم استبداله بـtargetSdkVariant.unitTest، لأنّها لم تكن تنطبق على المكوّن الإضافيcom.android.test. يتوفّر النوعunitTestعلى الأنواع الفرعيةVariantBuilderالتي تتضمّنHasUnitTest.VariantBuilder.targetSdkوtargetSdkPreview، لأنّها لم تكن ذات معنى في المكتبات. يُرجى استخدامGeneratesApkBuilder.targetSdkأوGeneratesApkBuilder.targetSdkPreviewبدلاً من ذلك.VariantBuilder.enableUnitTest، لأنّها لم تكن تنطبق على المكوّن الإضافيcom.android.test. يتوفّر النوعenableUnitTestعلى الأنواع الفرعيةVariantBuilderالتي تتضمّنHasUnitTestBuilder.تمت إزالة
VariantBuilder.unitTestEnabledواستبداله بـenableUnitTestالذي يحمل اسمًا أكثر اتساقًا، وذلك في الأنواع الفرعيةVariantBuilderالتي تتضمّنHasUnitTestBuilder.VariantOutput.enable. تم استبداله بـenabledتم إيقاف ميزتَي
FeaturePluginوFeatureExtensionنهائيًا.واجهات برمجة التطبيقات
BaseExtension.registerTransformالتي تم إيقافها أو إزالتها نهائيًا، والتي كانت متاحة فقط للسماح بالتجميع باستخدام أحدث إصدار من "مكوّن Android الإضافي" مع استهداف الإصدار 4.2 أو الإصدارات الأقدم من "مكوّن Android الإضافي"
إزالة خصائص Gradle
تمت إضافة خصائص Gradle التالية في البداية كطرق لإيقاف الميزات المفعَّلة تلقائيًا على مستوى العالم.
تم إيقاف هذه الميزات تلقائيًا منذ الإصدار 8.0 أو الإصدارات الأقدم من "مكوّن Android الإضافي". فعِّل هذه الميزات في المشاريع الفرعية التي تستخدمها فقط للحصول على عملية إنشاء أكثر كفاءة.
| الخاصية | الوظيفة | الاستبدال |
|---|---|---|
android. |
تتيح هذه السمة تجميع AIDL في جميع المشاريع الفرعية |
فعِّل تجميع AIDL في المشاريع الفرعية فقط التي تتضمّن مصادر AIDL، وذلك من خلال ضبط السمة التالية في ملفات إنشاء Gradle الخاصة بهذه المشاريع:
android {
buildFeatures {
aidl = true
}
} |
android. |
تتيح تجميع RenderScript في جميع المشاريع الفرعية |
فعِّل تجميع renderscript في المشاريع الفرعية فقط التي تتضمّن مصادر renderscript
من خلال ضبط السمة التالية في ملفات إنشاء Gradle الخاصة بهذه المشاريع:
android {
buildFeatures {
renderScript = true
}
} |
خصائص Gradle الإلزامية
يُصدر الإصدار 9.0 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" خطأً إذا ضبطت خصائص Gradle التالية.
لن يرقّي مساعد ترقية المكوّن الإضافي لنظام Gradle المتوافق مع Android المشاريع إلى الإصدار 9.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android التي تستخدم هذه الخصائص.
| الخاصية | الوظيفة |
|---|---|
android. |
يتم الآن دائمًا تنفيذ عملية تصغير حجم الموارد كجزء من R8، وتمت إزالة التنفيذ السابق. |
android. |
يستخدم تقليص الموارد الآن دائمًا تقليص الموارد الدقيق، ما يتيح إزالة المزيد من الموارد. |
المشاكل التي تم إصلاحها
الإصدار 9.0.0-beta04 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
| المشاكل التي تم إصلاحها | |||
|---|---|---|---|
| المكوّن الإضافي لنظام Gradle المتوافق مع Android |
|
||
الإصدار 9.0.0-beta03 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
| المشاكل التي تم إصلاحها | |
|---|---|
| لم يتم وضع العلامة "تم حلّها" على أي مشاكل عامة في الإصدار 9.0.0-beta03 من Android Gradle Plugin. |
الإصدار 9.0.0-beta02 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
| المشاكل التي تم إصلاحها | ||||
|---|---|---|---|---|
| المكوّن الإضافي لنظام Gradle المتوافق مع Android |
|
|||
| Lint |
|
|||
| دمج Lint |
|
|||
الإصدار 9.0.0-beta01 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
| المشاكل التي تم إصلاحها | |
|---|---|
| لم يتم وضع العلامة "تم حلّها" على أي مشاكل عامة في الإصدار 9.0.0-beta01 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" |
الإصدار 9.0.0-alpha14 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
| المشاكل التي تم إصلاحها | |||||||
|---|---|---|---|---|---|---|---|
| المكوّن الإضافي لنظام Gradle المتوافق مع Android |
|
||||||
| دمج Lint |
|
||||||
| Shrinker (R8) |
|
||||||
الإصدار 9.0.0-alpha13 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
| المشاكل التي تم إصلاحها | ||||
|---|---|---|---|---|
| المكوّن الإضافي لنظام Gradle المتوافق مع Android |
|
|||
الإصدار 9.0.0-alpha12 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
| المشاكل التي تم إصلاحها | |||||
|---|---|---|---|---|---|
| المكوّن الإضافي لنظام Gradle المتوافق مع Android |
|
||||
الإصدار 9.0.0-alpha11 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
| المشاكل التي تم إصلاحها | ||||
|---|---|---|---|---|
| المكوّن الإضافي لنظام Gradle المتوافق مع Android |
|
|||
الإصدار 9.0.0-alpha10 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
| المشاكل التي تم إصلاحها | ||||
|---|---|---|---|---|
| المكوّن الإضافي لنظام Gradle المتوافق مع Android |
|
|||
| Lint |
|
|||
الإصدار 9.0.0-alpha09 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
| المشاكل التي تم إصلاحها | ||||
|---|---|---|---|---|
| المكوّن الإضافي لنظام Gradle المتوافق مع Android |
|
|||
الإصدار 9.0.0-alpha08 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
| المشاكل التي تم إصلاحها | |
|---|---|
| لم يتم وضع العلامة "تم حلّها" على أي مشاكل عامة في الإصدار 9.0.0-alpha08 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" |
الإصدار 9.0.0-alpha07 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
| المشاكل التي تم إصلاحها | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| المكوّن الإضافي لنظام Gradle المتوافق مع Android |
|
||||||||
الإصدار 9.0.0-alpha06 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
| المشاكل التي تم إصلاحها | |||||
|---|---|---|---|---|---|
| المكوّن الإضافي لنظام Gradle المتوافق مع Android |
|
||||
| Lint |
|
||||
الإصدار 9.0.0-alpha05 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
| المشاكل التي تم إصلاحها | |||||
|---|---|---|---|---|---|
| المكوّن الإضافي لنظام Gradle المتوافق مع Android |
|
||||
| Lint |
|
||||
الإصدار 9.0.0-alpha04 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
| المشاكل التي تم إصلاحها | ||||
|---|---|---|---|---|
| المكوّن الإضافي لنظام Gradle المتوافق مع Android |
|
|||
| Lint |
|
|||
الإصدار 9.0.0-alpha03 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
| المشاكل التي تم إصلاحها | ||||
|---|---|---|---|---|
| المكوّن الإضافي لنظام Gradle المتوافق مع Android |
|
|||
| Lint |
|
|||
الإصدار 9.0.0-alpha02 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
| المشاكل التي تم إصلاحها | ||||
|---|---|---|---|---|
| المكوّن الإضافي لنظام Gradle المتوافق مع Android |
|
|||
الإصدار 9.0.0-alpha01 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
| المشاكل التي تم إصلاحها | |||||||
|---|---|---|---|---|---|---|---|
| المكوّن الإضافي لنظام Gradle المتوافق مع Android |
|
||||||