الإصدار 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 الميزات الجديدة التالية.
إصدار لغة Java 8 تلقائيًا
بدءًا من الإصدار 4.2، سيستخدم AGP مستوى لغة Java 8 تلقائيًا. يتيح الإصدار 8 من Java الوصول إلى عدد من ميزات اللغة الأحدث، بما في ذلك تعبيرات 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 الجديد في أداة الإصدار 4.2 من Android Gradle محل أجزاء من برنامج تجميع موارد 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 الإصدار 4 نشر حِزم APK كبيرة بسرعة باستخدام التثبيت التدريجي لحِزم APK في Android 11. تتولّى هذه العلامة الجديدة خطوة توقيع حزمة APK في عملية النشر.
ضبط عملية توقيع التطبيق لكل صيغة
يمكنك الآن تفعيل ميزة "توقيع التطبيق" أو إيقافها في المكوّن الإضافي لنظام Gradle المتوافق مع Android لكل صيغة.
يوضّح هذا المثال كيفية ضبط ميزة "توقيع التطبيق" لكل صيغة باستخدام طريقة
onVariants()
في Kotlin أو Groovy:
androidComponents {
onVariants(selector().withName("fooDebug"), {
signingConfig.enableV1Signing.set(false)
signingConfig.enableV2Signing.set(true)
})
خاصية Gradle الجديدة:
android.native.buildOutput
للحدّ من الازدحام في ناتج الإصدار، يفلتر الإصدار 4.2 من AGP الرسائل
من عمليات الإنشاء الأصلية التي تستخدم CMake وndk-build
،
ويعرض ناتج برنامج الترجمة البرمجية للغة C/C++ فقط تلقائيًا. في السابق، كان يتم إنشاء سطر من المخرجات
لكل ملف تم إنشاؤه، ما يؤدي إلى ظهور عدد كبير من
الرسائل الإعلامية.
إذا كنت تريد الاطّلاع على الناتج الكامل للغة الأصلية، اضبط قيمة خاصية Gradle الجديدة android.native.buildOutput
على verbose
.
يمكنك ضبط هذه السمة في ملف gradle.properties
أو من خلال سطر الأوامر.
gradle.properties
android.native.buildOutput=verbose
سطر الأوامر
-Pandroid.native.buildOutput=verbose
القيمة التلقائية لهذه السمة هي quiet
.
تغيير في سلوك ملفات gradle.properties
بدءًا من الإصدار 4.2 من "مكوّن Android الإضافي لبرنامج Gradle"، لم يعُد من الممكن تجاهل خصائص Gradle من المشاريع الفرعية. بعبارة أخرى، إذا أعلنت عن سمة في ملف gradle.properties
في مشروع فرعي بدلاً من المشروع الجذر، سيتم تجاهلها.
على سبيل المثال، في الإصدارات السابقة، كان AGP يقرأ القيم من
<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 من AGP، تم تغيير هذا السلوك، ولن يحمّل AGP القيم من
gradle.properties
في المشاريع الفرعية (على سبيل المثال،
<var>projectDir</var>/app/gradle.properties
).
يعكس هذا التغيير
سلوك Gradle الجديد ويتيح
التخزين المؤقت للإعدادات.
لمزيد من المعلومات حول ضبط القيم في ملفات gradle.properties
، راجِع مستندات Gradle.
تغييرات في التوافق والإعدادات في Gradle
عند التشغيل في "استوديو Android"، تستخدم أداة الإنشاء Gradle حزمة تطوير Java المضمّنة في "استوديو Android". في الإصدارات السابقة، كانت حزمة تطوير Java (JDK) 8 مضمّنة في Studio. في الإصدار 4.2، تم تضمين JDK 11 بدلاً من ذلك. عند استخدام حزمة JDK الجديدة لتشغيل Gradle، قد يؤدي ذلك إلى حدوث بعض المشاكل في التوافق أو التأثير في أداء الجهاز الافتراضي لـ Java (JVM) بسبب التغييرات التي تم إجراؤها على أداة جمع البيانات غير المرغوب فيها. في ما يلي وصف لهذه المشاكل.
ملاحظة: مع أنّنا ننصح بتشغيل Gradle باستخدام JDK 11، يمكنك تغيير JDK المستخدَم لتشغيل Gradle في مربع الحوار بنية المشروع. سيؤدي تغيير هذا الإعداد إلى تغيير JDK المستخدَم لتشغيل Gradle فقط، ولن يؤدي إلى تغيير JDK المستخدَم لتشغيل Studio نفسه.
توافُق "استوديو Android" مع المكوّن الإضافي لنظام Gradle المتوافق مع Android (AGP)
يمكن للإصدار 4.2 من Android Studio فتح المشاريع التي تستخدم الإصدار 3.1 من "مكوّن Android الإضافي في Gradle" والإصدارات الأحدث، شرط أن يعمل "مكوّن Android الإضافي في Gradle" بالإصدار 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 أو أعلى
تتضمّن حزمة Android Gradle الإضافية الآن ملفات DEX غير مضغوطة في حِزم APK تلقائيًا عندما يكون minSdk
= 28 أو أعلى. يؤدي ذلك إلى زيادة حجم حزمة APK، ولكنّه يؤدي إلى تقليل حجم التثبيت على الجهاز، ويكون حجم التنزيل هو نفسه تقريبًا.
لإجبار AGP على تضمين ملفات DEX مضغوطة بدلاً من ذلك، يمكنك إضافة ما يلي إلى ملف build.gradle
:
android {
packagingOptions {
dex {
useLegacyPackaging true
}
}
}
استخدام لغة DSL لتعبئة المكتبات الأصلية المضغوطة
ننصحك بتضمين المكتبات الأصلية في حِزم غير مضغوطة، لأنّ ذلك يؤدي إلى تقليل حجم تثبيت التطبيق وحجم تنزيله، كما يؤدي إلى تسريع وقت تحميل التطبيق للمستخدمين. ومع ذلك، إذا كنت تريد أن تتيح لبرنامج Android Gradle المساعد تجميع المكتبات الأصلية المضغوطة عند إنشاء تطبيقك، اضبط useLegacyPackaging
على true
في ملف build.gradle
الخاص بتطبيقك:
android {
packagingOptions {
jniLibs {
useLegacyPackaging true
}
}
}
يحلّ العلم useLegacyPackaging
محلّ سمة ملف البيان extractNativeLibs
. لمزيد من المعلومات، يمكنك الاطّلاع على ملاحظة الإصدار
تعبئة المكتبات الأصلية غير المضغوطة تلقائيًا.