الإصدار 2.2.0 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" (سبتمبر 2016)
- التبعيات:
- جديد:
-
- يستخدم الإصدار Gradle 2.14.1 الذي يتضمّن تحسينات في الأداء وميزات جديدة، كما أنّه يعالج ثغرة أمنية تسمح بتصعيد الامتيازات المحلية عند استخدام Gradle daemon. لمزيد من التفاصيل، راجِع ملاحظات إصدار Gradle.
- باستخدام
externalNativeBuild {}
DSL، يتيح لك Gradle الآن الربط بالمصادر الأصلية وتجميع المكتبات الأصلية باستخدام CMake أو ndk-build. بعد إنشاء المكتبات المجمّعة من رموز برمجية أصلية، يجمعها Gradle في حزمة APK. لمزيد من المعلومات حول استخدام CMake وndk-build مع Gradle، يُرجى قراءة مقالة إضافة رمز C وC++ إلى مشروعك. - عند تشغيل إصدار من سطر الأوامر، يحاول Gradle الآن تنزيل أي مكوّنات أو تحديثات مفقودة في حزمة SDK يعتمد عليها مشروعك تلقائيًا. لمزيد من المعلومات، يُرجى قراءة مقالة التنزيل التلقائي للحِزم المفقودة باستخدام Gradle.
- تتيح ميزة التخزين المؤقت التجريبية الجديدة في Gradle تسريع أوقات الإنشاء من خلال تنفيذ عملية dex مسبقًا وتخزين إصدارات المكتبات التي تم تنفيذ عملية dex لها مسبقًا وإعادة استخدامها. لمزيد من المعلومات حول استخدام هذه الميزة التجريبية، يمكنك الاطّلاع على دليل ذاكرة التخزين المؤقت للبناء.
- تحسين أداء عملية الإنشاء من خلال استخدام مسار جديد لتعبئة الحِزم التلقائية يتولّى عملية الضغط والتوقيع ومحاذاة zip في مهمة واحدة يمكنك العودة إلى استخدام أدوات التغليف القديمة من خلال إضافة
android.useOldPackaging=true
إلى ملفgradle.properties
. أثناء استخدام أداة التغليف الجديدة، لا تتوفّر مهمةzipalignDebug
. ومع ذلك، يمكنك إنشاء واحد بنفسك عن طريق استدعاء طريقةcreateZipAlignTask(String taskName, File inputFile, File outputFile)
. - يستخدم توقيع حِزمة APK الآن الإصدار 2 من مخطّط توقيع حزمة APK بالإضافة إلى توقيع JAR التقليدي. تقبل جميع منصات Android حِزم APK الناتجة. ويؤدي أي تعديل على حِزم APK هذه بعد التوقيع إلى إبطال توقيعات الإصدار 2 ويمنع تثبيتها على أي جهاز. لإيقاف هذه الميزة،
أضِف ما يلي إلى ملف
build.gradle
على مستوى الوحدة:Groovy
android { ... signingConfigs { config { ... v2SigningEnabled false } } }
Kotlin
android { ... signingConfigs { create("config") { ... v2SigningEnabled = false } } }
- بالنسبة إلى إصدارات multidex، يمكنك الآن استخدام قواعد ProGuard لتحديد الفئات التي يجب أن يجمعها Gradle في ملف DEX الرئيسي الخاص بتطبيقك. بما أنّ نظام التشغيل Android يحمّل ملف DEX الرئيسي أولاً عند بدء تشغيل تطبيقك، يمكنك تحديد أولوية بعض الفئات عند بدء التشغيل من خلال تجميعها في ملف DEX الرئيسي. بعد إنشاء ملف إعداد ProGuard مخصّص لملف DEX الرئيسي، مرِّر مسار ملف الإعداد إلى Gradle باستخدام
buildTypes.multiDexKeepProguard
. يختلف استخدام لغة DSL هذه عن استخدامbuildTypes.proguardFiles
، الذي يوفّر قواعد ProGuard العامة لتطبيقك ولا يحدّد الفئات لملف DEX الرئيسي. - تضيف هذه السمة إمكانية استخدام العلامة
android:extractNativeLibs
، التي يمكن أن تقلّل حجم تطبيقك عند تثبيته على جهاز. عند ضبط هذا العلامة علىfalse
في عنصر<application>
في بيان التطبيق، يجمّع Gradle إصدارات غير مضغوطة ومتوافقة من المكتبات المجمّعة من رموز برمجية أصلية مع حزمة APK. يمنع هذا الإعدادPackageManager
من نسخ المكتبات المجمّعة من رموز برمجية أصلية من حِزمة APK إلى نظام ملفات الجهاز أثناء التثبيت، كما يوفّر ميزة إضافية تتمثّل في تصغير حجم التحديثات التفاضلية لتطبيقك. - يمكنك الآن تحديد
versionNameSuffix
وapplicationIdSuffix
لنكهات المنتجات. (المشكلة 59614)
- التغييرات:
-
-
تعرض
getDefaultProguardFile
الآن ملفات ProGuard التلقائية التي يوفّرها المكوّن الإضافي لنظام Android في Gradle، ولم تعُد تستخدم الملفات المتوفّرة في حزمة تطوير البرامج (SDK) لنظام Android. - تحسين أداء وميزات برنامج Jack المجمّع:
- يتوافق Jack الآن مع تغطية اختبار Jacoco عند ضبط
testCoverageEnabled
علىtrue
. - تحسين التوافق مع معالجات التعليقات التوضيحية تتم تلقائيًا إضافة معالِجات التعليقات التوضيحية
في مسار الفئة، مثل أي تبعيات
compile
، إلى عملية الإنشاء. يمكنك أيضًا تحديد معالج تعليقات توضيحية في عملية الإنشاء وتمرير الوسيطات باستخدامjavaCompileOptions.annotationProcessorOptions {}
DSL في ملفbuild.gradle
على مستوى الوحدة:Groovy
android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { className 'com.example.MyProcessor' // Arguments are optional. arguments = [ foo : 'bar' ] } } } }
Kotlin
android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { className = "com.example.MyProcessor" // Arguments are optional. arguments(mapOf(foo to "bar")) } } } }
إذا أردت تطبيق معالج تعليقات توضيحية في وقت الترجمة البرمجية ولكن بدون تضمينه في حزمة APK، استخدِم نطاق التبعية
annotationProcessor
:Groovy
dependencies { compile 'com.google.dagger:dagger:2.0' annotationProcessor 'com.google.dagger:dagger-compiler:2.0' // or use buildVariantAnnotationProcessor to target a specific build variant }
Kotlin
dependencies { implementation("com.google.dagger:dagger:2.0") annotationProcessor("com.google.dagger:dagger-compiler:2.0") // or use buildVariantAnnotationProcessor to target a specific build variant }
- تلقائيًا، إذا كان حجم الذاكرة المؤقتة لبرنامج Gradle الخفي يبلغ 1.5 غيغابايت على الأقل، سيتم تشغيل Jack في العملية نفسها التي يتم فيها تشغيل Gradle. لضبط حجم الذاكرة المخصّصة للعمليات في الخلفية، أضِف ما يلي إلى ملف
gradle.properties
:# This sets the daemon heap size to 1.5GB. org.gradle.jvmargs=-Xmx1536M
للحصول على قائمة بالمعلَمات التي يمكنك ضبطها، نفِّذ ما يلي من سطر الأوامر:
java -jar /build-tools/jack.jar --help-properties
- يتوافق Jack الآن مع تغطية اختبار Jacoco عند ضبط
-
تعرض
الحد الأدنى للإصدار | الإصدار التلقائي | الملاحظات | |
---|---|---|---|
Gradle | 2.14.1 | 2.14.1 | لمزيد من المعلومات، اطّلِع على تحديث Gradle. |
أدوات إنشاء حزمة تطوير البرامج (SDK) | 23.0.2 | 23.0.2 | ثبِّت أو اضبط أدوات إنشاء حزمة تطوير البرامج (SDK). |