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

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

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

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

  • تم الإبلاغ عن مشاكل متكرّرة في الصف من خلال R8.

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

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

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

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

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

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

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

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

التوافق

الحد الأدنى للإصدار الإصدار التلقائي
مبرّد 7.2 7.2
أدوات إنشاء حِزم تطوير البرامج (SDK) 30.0.3 30.0.3
العُقدة (NDK) لا ينطبق 21.4.7075529
JDK 11 11

مهمة تحليل الوبر قابلة للتخزين المؤقت الآن

يتوافق AndroidLintAnalysisTask الآن مع ذاكرة التخزين المؤقت لإصدار Gradle. إذا فعّلت ذاكرة التخزين المؤقت للإصدار من خلال ضبط org.gradle.caching=true في ملف gradle.properties، ستحصل مهمة تحليل الوبر على نتائجها من ذاكرة التخزين المؤقت للإصدار متى أمكن.

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

قد تشير وحدات 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
  }
}
  • يجب أن تشير وحدة الاستخدام إلى وحدة النشر من خلال إضافة سطر في الجزء dependencies من ملف build.gradle. مثلاً:
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'
          }
        }
      }
    }

للحصول على مزيد من التوضيح حول كيفية ضبط إعدادات المستهلكين والمنتجين الأصليين باستخدام AGP، يمكنك الاطّلاع على الاعتماديات الأصلية مع AGP.

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

عند إنشاء مشروع جديد في Bumblebee لأجهزة Android، يحتوي ملف 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 على مستوى الوحدة لتحديد إعدادات التصميم التي تخص وحدة معيّنة في مشروعك.

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

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

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

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

نشر JavaDoc JAR

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

نشر المصادر بتنسيق JAR

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

تغيير دلالي كتلة الوبر

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

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

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

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

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

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

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

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

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

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

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

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