الإصدار 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++ فقط تلقائيًا. في السابق، كان يتم إنشاء سطر من المخرجات
لكل ملف تم إنشاؤه، ما يؤدي إلى ظهور عدد كبير من
الرسائل الإعلامية.
إذا أردت الاطّلاع على الناتج الكامل للغة الأصلية، اضبط قيمة السمة الجديدة android.native.buildOutput
في Gradle على 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، قد يؤدي ذلك إلى حدوث بعض حالات عدم التوافق أو التأثير في أداء الجهاز الافتراضي لجافا (JVM) بسبب التغييرات التي تم إجراؤها على أداة جمع البيانات غير المرغوب فيها. في ما يلي وصف لهذه المشاكل.
ملاحظة: على الرغم من أنّنا ننصح بتشغيل Gradle باستخدام JDK 11، يمكنك تغيير JDK المستخدَم لتشغيل Gradle في مربّع الحوار بنية المشروع. سيؤدي تغيير هذا الإعداد إلى تغيير JDK المستخدَم لتشغيل Gradle فقط، ولن يؤدي إلى تغيير JDK المستخدَم لتشغيل Studio نفسه.
توافُق "استوديو Android" مع المكوّن الإضافي لنظام Gradle المتوافق مع Android (AGP)
يمكن للإصدار 4.2 من "استوديو Android" فتح المشاريع التي تستخدم الإصدار 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 plugin
حِزمًا من المكتبات المجمّعة من رموز برمجية أصلية عند إنشاء تطبيقك، اضبط
useLegacyPackaging
على true
في ملف build.gradle
الخاص بتطبيقك:
android {
packagingOptions {
jniLibs {
useLegacyPackaging true
}
}
}
يحلّ العلم useLegacyPackaging
محلّ سمة ملف البيان extractNativeLibs
. لمزيد من المعلومات، يمكنك الاطّلاع على ملاحظة الإصدار
تعبئة المكتبات الأصلية غير المضغوطة تلقائيًا.