الإصدار 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 تلقائيًا. توفّر 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"
}
}
أداة تجميع موارد جديدة لآلة Java الافتراضية
يحلّ أداة جديدة لتجميع موارد Java Virtual Machine (JVM) في أداة "مكوّن إضافي لـ Gradle في Android" 4.2 محل أجزاء من أداة تجميع موارد AAPT2، ما قد يؤدي إلى تحسين أداء عملية الإنشاء، خاصةً على أجهزة Windows. يكون "مجمّع الموارد" الجديد لنظام التشغيل JVM مفعّلاً تلقائيًا.
توقيع الإصدارَين 3 و4 متاحان الآن
يتيح الآن الإصدار 4.2 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" تنسيقَي توقيع حزمة APK 3
وحزمة APK 4.
لتفعيل أحد هذين التنسيقَين أو كليهما في عملية الإنشاء، أضِف السمات التالية إلى ملف build.gradle
أو build.gradle.kts
على مستوى الوحدة:
// build.gradle
android {
...
signingConfigs {
config {
...
enableV3Signing true
enableV4Signing true
}
}
}
// build.gradle.kts
android {
...
signingConfigs {
config {
...
enableV3Signing = true
enableV4Signing = true
}
}
}
يتيح لك توقيع الإصدار 4 من حِزم APK نشر حِزم APK كبيرة بسرعة باستخدام ADB تثبيت حِزم 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
لتقليل الازدحام في نتائج الإنشاء، تصفِّر أداة AGP 4.2 الرسائل
من عمليات الإنشاء الأصلية التي تستخدِم 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
بدءًا من الإصدار AGP 4.2، لم يعُد من الممكن إلغاء سمات 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 حزمة JDK المضمّنة في "استوديو Android". في الإصدارات السابقة، كان JDK 8 مضمّنًا في Studio. في الإصدار 4.2، يتم الآن تجميع JDK 11 بدلاً من ذلك. عند استخدام حِزمة JDK الجديدة لتشغيل IDE Gradle، قد يؤدي ذلك إلى بعض حالات عدم التوافق أو التأثير في أداء JVM بسبب التغييرات في أداة جمع المهملات. في ما يلي وصف لهذه المشاكل.
ملاحظة: على الرغم من أنّنا ننصح بتشغيل Gradle باستخدام JDK 11، فإنه من الممكن تغيير حزمة JDK المستخدَمة لتشغيل Gradle في مربّع الحوار هيكل المشروع. لن يؤدي تغيير هذا الإعداد إلا إلى تغيير حزمة JDK المستخدَمة لتشغيل Gradle، ولن يؤدي إلى تغيير حزمة JDK المستخدَمة لتشغيل Studio نفسه.
توافق "استوديو Android" مع المكوّن الإضافي لنظام Gradle المتوافق مع Android (AGP)
يمكن لإصدار Android Studio 4.2 فتح المشاريع التي تستخدم الإصدار 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، ولكنّه يؤدي إلى تصغير حجم التثبيت على الجهاز، ويكون حجم التنزيل متماثلًا تقريبًا.
لفرض استخدام AGP لحزمة ملفات DEX المضغوطة بدلاً من ذلك، يمكنك إضافة الرمز التالي إلى ملف build.gradle
:
android {
packagingOptions {
dex {
useLegacyPackaging true
}
}
}
استخدام لغة وصف البيانات لحزمة المكتبات المجمّعة من رموز برمجية أصلية المضغوطة
ننصحك بتجميع المكتبات الأصلية في شكل غير مضغوط، لأنّ ذلك يؤدي إلى تقليل حجم تثبيت التطبيق وحجم تنزيله ووقت تحميله. ومع ذلك، إذا كنت تريد أن يحزِّم "مكوّن Android Gradle الإضافي"
المكتبات المجمّعة من رموز برمجية أصلية المضغوطة عند إنشاء تطبيقك، اضبط
useLegacyPackaging
على true
في ملف build.gradle
الخاص بتطبيقك:
android {
packagingOptions {
jniLibs {
useLegacyPackaging true
}
}
}
يحلّ الرمز useLegacyPackaging
محلّ سمة البيان extractNativeLibs
. لمزيد من المعلومات الأساسية، يُرجى الاطّلاع على ملاحظة الإصدار
المكتبات الأصلية المُجمَّعة غير المضغوطة تلقائيًا.