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

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

‫7.1.3 (أبريل 2022)

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

  • مشاكل الفئات المكرّرة التي أبلغ عنها R8

للاطّلاع على قائمة كاملة بإصلاحات الأخطاء المضمّنة في هذا الإصدار، راجِع منشور المدونة حول الإصدار 3 من حزمة تصحيح Android Studio Bumblebee.

‫7.1.2 (فبراير 2022)

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

  • تعذُّر تنفيذ الإصدار 7.1.0-rc01 من المكوّن الإضافي لنظام Gradle المتوافق مع Android لعملية تحويل رمز ASM الثانوي أثناء اختبارات الوحدة
  • تعذُّر مزامنة Gradle بسبب "تعذُّر تحميل الفئة 'com.android.build.api.extension.AndroidComponentsExtension'."
  • تعذُّر استخدام بعض حِزم DSL الجديدة من Groovy DSL في الإصدار 7.0.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android
  • واجهة برمجة التطبيقات الجديدة للنشر في الإصدار 7.1 من "مكوّن Android الإضافي لنظام Gradle": لا يتم توقيع ملف JAR الذي تم إنشاؤه باستخدام Javadoc
  • يجب أن تستخدم ClassesDataSourceCache أحدث إصدار من Asm
  • لا ينشر استوديو Android Bumblebee دائمًا أحدث التغييرات

للاطّلاع على قائمة كاملة بإصلاحات الأخطاء المضمّنة في هذا الإصدار، راجِع منشور المدونة حول الإصدار 2 من حزمة تصحيح Android Studio Bumblebee.

‫7.1.1 (فبراير 2022)

يتوافق هذا التحديث الثانوي مع إصدار حزمة تصحيح استوديو Android Bumblebee رقم 1.

للاطّلاع على قائمة بإصلاحات الأخطاء المضمّنة في هذا الإصدار، راجِع منشور المدونة حول الإصدار 1 من حزمة تصحيح Android Studio Bumblebee.

التوافق

الإصدار الأدنى الإصدار التلقائي ملاحظات
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 متوافقًا الآن مع ذاكرة التخزين المؤقت لتصميم Gradle. إذا فعّلت ذاكرة التخزين المؤقت للإصدار من خلال ضبط org.gradle.caching=true في ملف gradle.properties، ستحصل مهمة تحليل Lint على ناتجها من ذاكرة التخزين المؤقت للإصدار عند الإمكان.

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

يمكن لوحدات C/C++‎ الآن الإشارة إلى وحدات C/C++‎ أخرى في المشروع نفسه

يمكن الآن إعداد وحدة Gradle Android تتضمّن رمز C/C++‎ للإشارة إلى ملفات العناوين ورمز المكتبة في وحدة Gradle أخرى. يُستخدم بروتوكول Prefab لنقل العناوين والمكتبات بين وحدات Gradle.

المتطلبات

  • يجب أن تكون الوحدة المستهلكة هي CMake وليس ndk-build. سيتطلّب توفير دعم لتصميم ndk إجراء تحديث مستقبلي لحزمة 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 الأصليين باستخدام AGP، راجِع الاعتمادية الأصلية باستخدام AGP.

إعدادات المستودع في ملف settings.gradle

عند إنشاء مشروع جديد في استوديو Android Bumblebee، يحتوي ملف ذو المستوى الأعلى build.gradle على حزمة plugins، يتبعها رمز لتنظيف دليل الإصدار:

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 على مستوى الوحدة لتحديد إعدادات الإصدار الخاصة بوحدة معيّنة ضمن مشروعك.

أداة تقليص الموارد المحسّنة

يتضمّن استوديو Android Bumblebee أداة تقليص موارد محسّنة تساعد في تقليل حجم تطبيقك.

دعم التطبيقات التي تتضمّن ميزات ديناميكية

تم تعديل التنفيذ التلقائي لأداة تقليص موارد 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. تنشئ "مكوّنات Android Gradle"‏ (AGP) مكوّنًا يتضمّن صيغة إنشاء واحدة أو عدة صيغ استنادًا إلى لغة DSL الجديدة للنشر، ويمكنك استخدامها لتخصيص عملية النشر في مستودع Maven. مقارنةً بالإصدارات السابقة، يتيح ذلك أيضًا تجنُّب العمل غير الضروري، إذ لن يتم إنشاء أي مكوّنات تلقائيًا. لمزيد من المعلومات، يمكنك الاطّلاع على نموذج رمز النشر.

نشر ملف JAR الخاص بـ Javadoc

يتيح لك الإصدار 7.1.0 من "مكوّن Android الإضافي لنظام Gradle" والإصدارات الأحدث إنشاء Javadoc من مصادر Java وKotlin ونشر ملفات JAR الخاصة بـ Javadoc بالإضافة إلى ملفات AAR لمشاريع المكتبة. تتم إضافة Javadoc إلى ملفات POM و Gradle Module Metadata{:.external} . يمكنك تفعيل هذه الميزة من خلال إضافة withJavadocJar() في الـ singleVariant أو multipleVariants حزمة النشر. لمزيد من المعلومات، يمكنك الاطّلاع على عينة تعليمات برمجية لخيارات النشر.

نشر ملف JAR الخاص بالمصادر

يتيح لك الإصدار 7.1.0 من "مكوّن Android الإضافي لنظام Gradle" والإصدارات الأحدث نشر ملفات JAR الخاصة بمصادر Java وKotlin بالإضافة إلى ملفات AAR لمشاريع المكتبة. تتم إضافة المصادر إلى ملفات POM و Gradle Module Metadata{:.external}. يمكنك تفعيل هذه الميزة من خلال إضافة withSourcesJar() في singleVariant أو multipleVariants حزمة النشر. لمزيد من المعلومات، يمكنك الاطّلاع على عينة تعليمات برمجية لخيارات النشر.

تغيير معنى قسم Lint

تراعي الآن جميع طرق lint التي تتجاوز مستوى الخطورة المحدّد لمشكلة ما، مثل enable وdisable/ignore وinformational وwarning وerror وfatal، ترتيب الإعدادات. على سبيل المثال، يؤدي ضبط مشكلة على أنّها خطيرة في finalizeDsl() إلى إلغاء إيقافها في لغة DSL الرئيسية. لمزيد من المعلومات، راجِع مستندات مرجع lint{} ونقاط التوسيع ومسار إصدار Android.

تمت إزالة واجهات برمجة التطبيقات الخاصة بالمكوّن الإضافي لنظام Gradle المتوافق مع Android والتي يعتمد عليها المكوّن الإضافي لنظام Gradle الخاص بـ Safe Args في Navigation. لا يتوافق الإصدار 7.1 من "مكوّن Android الإضافي لبرنامج Gradle" مع الإصدارات 2.4.0-rc1 أو 2.4.0 من Navigation Safe Args، ولكنّه يتوافق مع الإصدارَين 2.5.0-alpha01 و2.4.1. في الوقت الحالي، يمكنك استخدام الإصدار 7.1 من "مكوّن Android الإضافي لبرنامج Gradle" مع لقطة من إصدار Navigation Safe Args، وهو الإصدار 2.5.0-SNAPSHOT من Navigation. لاستخدام إصدار اللقطة، اتّبِع تعليمات اللقطة مع رقم تعريف الإصدار 8054565.

بالإضافة إلى ذلك، لن تتوافق الإصدارات 2.4.1 و2.5.0 من Navigation Safe Args مع الإصدار 4.2 من "مكوّن Android الإضافي لنظام Gradle" ولاستخدام هذه الإصدارات من Safe Args، عليك استخدام الإصدار 7.0 من "مكوّن Android الإضافي لنظام Gradle" والإصدارات الأحدث.

إيقاف ميزة الإنشاء التلقائي للمكوّنات

بدءًا من الإصدار 8.0 من "مكوّن Android الإضافي في Gradle"، سيتم إيقاف ميزة الإنشاء التلقائي للمكوّنات تلقائيًا. في الوقت الحالي، تنشئ الإصدار 7.1 من "مكوّن Android الإضافي لنظام Gradle" تلقائيًا مكوّنًا لكل صيغة إنشاء، ويحمل هذا المكوّن الاسم نفسه الخاص بصيغة الإنشاء، بالإضافة إلى مكوّن all يحتوي على جميع صيغ الإصدار. سيتم إيقاف ميزة الإصدار التلقائي للمكوّنات. للانتقال إلى السلوك الجديد، عليك إيقاف إنشاء المكوّنات تلقائيًا يدويًا من خلال ضبط android.disableAutomaticComponentCreation على true.. لمزيد من المعلومات، راجِع استخدام مكوّن Maven Publish الإضافي.

التوافق مع مراقبة الأداء في Firebase

لا يتوافق الإصدار 7.1 من "مكوّن Android الإضافي لنظام Gradle" مع الإصدار 1.4.0 والإصدارات الأقدم من المكوّن الإضافي لنظام Gradle الخاص بمراقبة الأداء في Firebase. لن يحدِّث "مساعد ترقية مكوّن Android الإضافي لنظام Gradle" تلقائيًا المكوّن الإضافي إلى الإصدار 1.4.1، لذا إذا كنت تستخدم firebase-perf وتريد ترقية "مكوّن Android الإضافي لنظام Gradle" إلى الإصدار 7.1، عليك إجراء هذه الترقية المحدّدة يدويًا.

المشاكل المعروفة

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

مشاكل في اختبار الوحدة لمشروع تطبيق يستخدم المكوّن الإضافي Hilt

يحتوي مسار فئة اختبار الوحدة على فئات التطبيق غير المزوَّدة بأدوات، ما يعني أنّ Hilt لا يزوّد فئات التطبيق بأدوات للتعامل مع عملية إدخال الاعتمادية عند تنفيذ اختبارات الوحدة.

سيتم إصلاح هذه المشكلة في الإصدار 7.1.1، راجِع المشكلة رقم 213534628.