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

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

7.1.3 (نيسان/أبريل 2022)

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

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

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

‫7.1.2 (شباط/فبراير 2022)

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

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

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

‫7.1.1 (شباط/فبراير 2022)

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

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

نشر ملف Javadoc JAR

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

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

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

Lint block semantic change

تراعي الآن جميع طرق 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"، ويجب استخدام الإصدار 7.0 من "مكوّن Android الإضافي لبرنامج Gradle" أو إصدار أحدث لاستخدام هذين الإصدارين من Safe Args.

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

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

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

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

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

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

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

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

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