الإصدار 2.2.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android (سبتمبر 2016)
- الاعتماديات:
- جديد:
-
- يستخدم الإصدار 2.14.1 من Gradle، الذي يتضمّن تحسينات في الأداء وميزات جديدة، ويحلّ ثغرة أمنية تسمح بتصعيد الامتيازات المحلية عند استخدام عملية Gradle في الخلفية. لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات إصدار Gradle.
- باستخدام
externalNativeBuild {}DSL، يتيح لك Gradle الآن الربط بمصادر C/C++ وتجميع مكتبات C/C++ باستخدام CMake أو ndk-build. بعد إنشاء مكتبات C/C++، يجمعها Gradle في حزمة APK. لمزيد من المعلومات حول استخدام CMake وndk-build مع Gradle، يمكنك الاطّلاع على إضافة رمز C وC++ إلى مشروعك. - عند تشغيل عملية إنشاء من سطر الأوامر، يحاول Gradle الآن تنزيل أي مكوّنات أو تحديثات مفقودة في حزمة SDK يعتمد عليها مشروعك تلقائيًا. لمزيد من المعلومات، اطّلِع على مقالة التنزيل التلقائي للحِزم المفقودة باستخدام Gradle.
- تتيح ميزة التخزين المؤقت التجريبية الجديدة في Gradle تسريع أوقات الإنشاء من خلال إجراء عملية التحويل إلى ملفات .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على مستوى الوحدة:أنيق
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 إصدارات غير مضغوطة ومتوافقة من مكتبات C/C++ مع حزمة APK. يمنع ذلكPackageManagerمن نسخ مكتبات C/C++ من حِزمة APK إلى نظام الملفات على الجهاز أثناء التثبيت، كما يوفّر ميزة إضافية تتمثّل في تصغير حجم التحديثات التفاضلية لتطبيقك. - يمكنك الآن تحديد
versionNameSuffixوapplicationIdSuffixلنكهات المنتجات. (المشكلة 59614)
- التغييرات:
-
-
تعرض
getDefaultProguardFileالآن ملفات ProGuard التلقائية التي يوفّرها مكوّن إضافي متوافق مع Android لنظام Gradle، ولم تعُد تستخدم الملفات المتوفّرة في حزمة تطوير البرامج (SDK) لنظام التشغيل Android. - تحسين أداء وميزات برنامج Jack المجمّع:
- يتوافق Jack الآن مع تغطية اختبار Jacoco عند ضبط
testCoverageEnabledعلىtrue. - تحسين التوافق مع معالجات التعليقات التوضيحية يتم تلقائيًا تطبيق معالِجات التعليقات التوضيحية في مسار الفئة، مثل أي تبعيات
compile، على عملية الإنشاء. يمكنك أيضًا تحديد معالج تعليقات توضيحية في عملية الإنشاء وتمرير الوسيطات باستخدامjavaCompileOptions.annotationProcessorOptions {}DSL في ملفbuild.gradleعلى مستوى الوحدة:أنيق
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:أنيق
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). |