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

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

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

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

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

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

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

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

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

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

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

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

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

التوافق

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

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

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

يمكن الآن إعداد وحدة Android في Gradle تحتوي على رمز 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)
   android {
      defaultConfig {
        externalNativeBuild {
          cmake {
            arguments '-DANDROID_STL=c++_shared'
          }
        }
      }
    }

لمزيد من الشرح حول كيفية ضبط مستخدِمي AAR الأصليين وصنّاع AAR الأصليين باستخدام AGP، اطّلِع على التبعيات الأصلية باستخدام AGP.

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

عند إنشاء مشروع جديد في الإصدار Bumblebee من Android Studio، يحتوي ملف build.gradle على مستوى أعلى على البنية plugins، followed by code to clean your build directory: متبوعًا برمز لتنظيف دليل الإنشاء:

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

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

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

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

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

نشر حزمة JAR لـ Javadoc

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

نشر حِزم JAR للمصادر

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

تغيير دلالي في رمز Lint

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

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

بالإضافة إلى ذلك، لن يعمل الإصداران 2.4.1 و2.5.0 من Navigation Safe Args مع AGP 4.2. لاستخدام هذين الإصدارَين من Safe Args، يجب استخدام AGP 7.0 والإصدارات الأحدث.

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

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

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

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

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

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

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

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

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