الإصدار 4.2.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android (مارس 2021)
التوافق
| الإصدار الأدنى | الإصدار التلقائي | ملاحظات | |
|---|---|---|---|
| Gradle | 6.7.1 | لا ينطبق | لمزيد من المعلومات، اطّلِع على تحديث Gradle. |
| أدوات تصميم حزمة تطوير البرامج (SDK) | 30.0.2 | 30.0.2 | تثبيت أو ضبط أدوات إنشاء حزمة تطوير البرامج (SDK). |
| NDK | لا ينطبق | 21.4.7075529 | ثبِّت أو اضبط إصدارًا مختلفًا من NDK. |
الميزات الجديدة
يتضمّن هذا الإصدار من المكوّن الإضافي لنظام Gradle المتوافق مع Android الميزات الجديدة التالية.
الإصدار 8 من لغة Java تلقائيًا
بدءًا من الإصدار 4.2، سيستخدم "مكوّن Android الإضافي لبرنامج Gradle" مستوى لغة Java 8 تلقائيًا. يتيح Java 8 الوصول إلى عدد من ميزات اللغة الأحدث، بما في ذلك تعبيرات lambda ومراجع الطرق وطرق الواجهة الثابتة. للاطّلاع على القائمة الكاملة للميزات المتوافقة، يُرجى مراجعة مستندات Java 8.
للاحتفاظ بالسلوك القديم، حدِّد Java 7 صراحةً في ملف build.gradle.kts أو build.gradle على مستوى الوحدة:
// build.gradle
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
// For Kotlin projects, compile to Java 6 instead of 7
kotlinOptions {
jvmTarget = "1.6"
}
}// build.gradle.kts
android {
...
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
}
// For Kotlin projects, compile to Java 6 instead of 7
kotlinOptions {
jvmTarget = "1.6"
}
}برنامج تجميع موارد JVM الجديد
يحلّ برنامج تجميع موارد آلة جافا الافتراضية (JVM) الجديد في أداة الإصدار 4.2 من مكوّن إضافي لنظام Gradle المتوافق مع Android محلّ أجزاء من أداة تجميع الموارد في Android (AAPT2)، ما قد يؤدي إلى تحسين أداء عملية الإنشاء، خاصةً على أجهزة Windows. ويكون برنامج تجميع موارد JVM الجديد مفعَّلاً تلقائيًا.
أصبح التوقيع بالإصدارَين 3 و4 متاحًا الآن
يتوافق الإصدار 4.2 من المكوّن الإضافي لنظام Gradle المتوافق مع Android الآن مع تنسيقات توقيع الإصدار 3 من حِزم APK والإصدار 4 من حِزم APK.
لتفعيل أحد هذين التنسيقَين أو كليهما في عملية الإنشاء، أضِف السمات التالية إلى ملف build.gradle أو build.gradle.kts على مستوى الوحدة:
// build.gradle
android {
...
signingConfigs {
config {
...
enableV3Signing true
enableV4Signing true
}
}
}// build.gradle.kts
android {
...
signingConfigs {
config {
...
enableV3Signing = true
enableV4Signing = true
}
}
}يتيح لك توقيع APK v4 نشر حِزم APK الكبيرة بسرعة باستخدام تثبيت APK المتزايد من ADB في Android 11. تتولّى هذه العلامة الجديدة خطوة توقيع حزمة APK في عملية النشر.
ضبط توقيع التطبيق لكل صيغة
أصبح من الممكن الآن تفعيل توقيع التطبيق أو إيقافه في المكوّن الإضافي لنظام Gradle المتوافق مع Android لكل صيغة.
يوضّح هذا المثال كيفية ضبط توقيع التطبيق لكل صيغة باستخدام طريقة
onVariants()
في Kotlin أو Groovy:
androidComponents {
onVariants(selector().withName("fooDebug")) {
signingConfig {
enableV1Signing false
enableV2Signing true
}
}
}
سمة Gradle الجديدة:
android.native.buildOutput
لتقليل الفوضى في مخرجات الإصدار، يفلتر الإصدار 4.2 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" الرسائل
من إصدارات C/C++ التي تستخدم CMake وndk-build،
ويعرض مخرجات برنامج تجميع C/C++ فقط بشكل تلقائي. في السابق، كان يتم إنشاء سطر من المخرجات لكل ملف يتم إنشاؤه، ما يؤدي إلى ظهور عدد كبير من الرسائل الإعلامية.
إذا أردت الاطّلاع على مخرجات C/C++ بالكامل، اضبط سمة Gradle الجديدة android.native.buildOutput على verbose.
يمكنك ضبط هذه السمة في ملف gradle.properties أو من خلال سطر الأوامر.
gradle.properties
android.native.buildOutput=verbose
سطر الأوامر
-Pandroid.native.buildOutput=verbose
القيمة التلقائية لهذه السمة هي quiet.
تغيير السلوك لملفات gradle.properties
اعتبارًا من الإصدار 4.2 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android"، لن يعود من الممكن إلغاء خصائص Gradle
من المشاريع الفرعية. بعبارة أخرى، إذا أعلنت عن سمة في ملف gradle.properties في مشروع فرعي بدلاً من المشروع الجذر، سيتم تجاهلها.
على سبيل المثال، في الإصدارات السابقة، كان المكوّن الإضافي لنظام Gradle المتوافق مع Android يقرأ القيم من
<var>projectDir</var>/gradle.properties
و<var>projectDir</var>/app/gradle.properties
و<var>projectDir</var>/library/gradle.properties
وما إلى ذلك. بالنسبة إلى وحدات التطبيق، إذا كانت سمة Gradle نفسها متوفّرة في كل من
<var>projectDir</var>/gradle.properties
و<var>projectDir</var>/app/gradle.properties،
ستكون الأولوية للقيمة من
<var>projectDir</var>/app/gradle.properties.
في الإصدار 4.2 من المكوّن الإضافي Gradle لنظام التشغيل Android، تم تغيير هذا السلوك، ولن يحمّل المكوّن الإضافي Gradle لنظام التشغيل Android القيم من
gradle.properties في المشاريع الفرعية (مثل
<var>projectDir</var>/app/gradle.properties).
يعكس هذا التغيير
سلوك Gradle الجديد ويتيح
التخزين المؤقت للإعدادات
لمزيد من المعلومات حول ضبط القيم في ملفات gradle.properties، يُرجى الاطّلاع على مستندات Gradle.
التغييرات في توافق Gradle وإعداداته
عند تشغيل أداة إصدار Gradle في "استوديو Android"، فإنّها تستخدم حزمة JDK المضمّنة في "استوديو Android". في الإصدارات السابقة، كان JDK 8 مدمجًا مع "استوديو Android". ومع ذلك، في الإصدار 4.2، يتم الآن تجميع JDK 11 بدلاً من ذلك. عند استخدام حزمة JDK الجديدة لتشغيل Gradle، قد يؤدي ذلك إلى حدوث بعض حالات عدم التوافق أو التأثير في أداء JVM بسبب التغييرات التي تم إجراؤها على أداة تجميع المهملات. في ما يلي توضيح لهذه المشاكل.
ملاحظة: على الرغم من أنّنا ننصح بتشغيل Gradle باستخدام JDK 11، من الممكن تغيير JDK المستخدَم لتشغيل Gradle في مربّع الحوار بنية المشروع. سيؤدي تغيير هذا الإعداد إلى تغيير حزمة JDK المستخدَمة لتشغيل Gradle فقط، ولن يؤدي إلى تغيير حزمة JDK المستخدَمة لتشغيل Studio نفسه.
توافق "استوديو Android" مع "مكوّن Android الإضافي لبرنامج Gradle" (AGP)
يمكن للإصدار 4.2 من "استوديو Android" فتح المشاريع التي تستخدم الإصدار 3.1 من AGP والإصدارات الأحدث، شرط أن يكون AGP يشغّل الإصدار 4.8.1 من Gradle والإصدارات الأحدث. لمزيد من المعلومات حول توافق Gradle، يُرجى الاطّلاع على تحديث Gradle.
تحسين إصدارات Gradle لـ JDK 11
يؤثر هذا التحديث إلى JDK 11 في الإعدادات التلقائية لجامع المهملات في JVM، لأنّ JDK 8 يستخدم جامع المهملات الموازي بينما يستخدم JDK 11 جامع المهملات G1.
لتحسين أداء عملية الإنشاء، ننصحك
باختبار عمليات إنشاء Gradle باستخدام
أداة تجميع المهملات المتوازية. في gradle.properties، اضبط ما يلي:
org.gradle.jvmargs=-XX:+UseParallelGCإذا كانت هناك خيارات أخرى تم ضبطها في هذا الحقل، أضِف خيارًا جديدًا:
org.gradle.jvmargs=-Xmx1536m -XX:+UseParallelGCلقياس سرعة عملية الإنشاء باستخدام إعدادات مختلفة، يمكنك الاطّلاع على إنشاء ملف شخصي لعملية الإنشاء.
ملفات DEX غير مضغوطة في حِزم APK عندما تكون قيمة minSdk تساوي 28 أو أعلى
يُجمِّع مكوّن AGP الآن ملفات DEX غير المضغوطة في ملفات APK تلقائيًا عندما يكون minSdk = 28 أو
أعلى. يؤدي ذلك إلى زيادة حجم حزمة APK، ولكنّه يؤدي إلى تقليل حجم التثبيت على الجهاز، ويكون حجم التنزيل متماثلاً تقريبًا.
لفرض ضغط ملفات DEX على مكوّن AGP الإضافي، يمكنك إضافة ما يلي إلى ملف build.gradle:
android {
packagingOptions {
dex {
useLegacyPackaging true
}
}
}
استخدام لغة DSL لتجميع مكتبات C/C++ المضغوطة
ننصح بتجميع مكتبات C/C++ في شكل غير مضغوط، لأنّ ذلك
يؤدي إلى تقليل حجم تثبيت التطبيق وحجم تنزيله وزيادة سرعة تحميله
للمستخدمين. ومع ذلك، إذا أردت أن يجمع المكوّن الإضافي لنظام Gradle المتوافق مع Android مكتبات C/C++ المضغوطة في حزمة عند إنشاء تطبيقك، اضبط useLegacyPackaging على true في ملف build.gradle الخاص بتطبيقك:
android {
packagingOptions {
jniLibs {
useLegacyPackaging true
}
}
}
يحلّ الإعداد useLegacyPackaging محلّ سمة البيان extractNativeLibs. لمزيد من المعلومات، يُرجى الاطّلاع على ملاحظة الإصدار
تجميع المكتبات المجمّعة من رموز برمجية أصلية بدون ضغطها تلقائيًا.