الإصدار 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)
- يجب أن تتوفر قيمة STL واحدة للتطبيق بأكمله. على سبيل المثال، يمكن لكل من وحدات المعالجة والنشر استخدام STL المشتركة في C++.
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.