الإصدار 4.2.0 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" (آذار/مارس 2021)
التوافق
الحد الأدنى للإصدار | الإصدار التلقائي | ملاحظات | |
---|---|---|---|
قاعدة مخروطية | 6.7.1 | لا ينطبق | لمعرفة المزيد من المعلومات، يمكنك الاطّلاع على تحديث Gradle. |
أدوات إنشاء حِزم تطوير البرامج (SDK) | 30.0.2 | 30.0.2 | تثبيت أدوات إنشاء حزمة تطوير البرامج (SDK) أو ضبطها |
كرونة دنماركية | لا ينطبق | 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 الافتراضية
يحل برنامج التجميع الجديد لموارد JVM في الإصدار 4.2 من المكوّن الإضافي لنظام Gradle المتوافق مع Android، محل الأجزاء مجمع موارد 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.property
بدءًا من الإصدار 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
عند تشغيل أداة إنشاء Gradle في "استوديو Android"، تستخدم حزمة JDK المجمّعة في "استوديو YouTube". في الإصدارات السابقة، تم تضمين قناة JDK 8 مع "استوديو YouTube". في الإصدار 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 فتح المشاريع التي تستخدم AGP 3.1 شريطة أن يقوم AGP بتشغيل Gradle 4.8.1 والإصدارات الأعلى. لمزيد من المعلومات، حول توافق 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
}
}
}
استخدام DSL لتجميع المكتبات الأصلية المضغوطة
ننصح بتجميع المكتبات الأصلية في شكل غير مضغوط، لأنّ هذا
يؤدي إلى تصغير حجم تثبيت التطبيق، وحجم أصغر لتنزيل التطبيق، وسرعة التطبيق.
وقت التحميل للمستخدمين ومع ذلك، إذا كنت تريد أن يعمل المكوّن الإضافي لنظام Gradle المتوافق مع Android
حزم المكتبات الأصلية المضغوطة عند إنشاء تطبيقك،
useLegacyPackaging
إلى true
في ملف build.gradle
لتطبيقك:
android {
packagingOptions {
jniLibs {
useLegacyPackaging true
}
}
}
تحلّ العلامة useLegacyPackaging
محلّ سمة البيان extractNativeLibs
. لمزيد من المعلومات الأساسية، يُرجى الاطّلاع على ملاحظة الإصدار.
المكتبات المجمّعة من رموز برمجية أصلية غير مضغوطة تلقائيًا: