الإصدار 2.2.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android (سبتمبر 2016)
- الاعتماديات:
- جديد:
-
- يستخدم Gradle الإصدار 2.14.1 الذي يتضمّن تحسينات في الأداء وميزات جديدة، ويصلح ثغرة أمنية تسمح بتصعيد الامتيازات المحلية عند استخدام برنامج Gradle الخفي. لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات إصدار Gradle.
- باستخدام لغة النطاق الخاصة بلغة Gradle (DSL)
externalNativeBuild {}، يتيح لك Gradle الآن الربط بمصادرك الأصلية وتجميع المكتبات الأصلية باستخدام CMake أو ndk-build. بعد إنشاء مكتباتك الأصلية، يضمّنها Gradle في حزمة APK. لمزيد من المعلومات حول استخدام CMake و ndk-build مع Gradle، يُرجى قراءة مقالة إضافة رمز C وC++ إلى مشروعك. - عند تشغيل عملية إنشاء من سطر الأوامر، يحاول Gradle الآن تنزيل أي مكوّنات أو تحديثات مفقودة من حزمة SDK يعتمد عليها مشروعك تلقائيًا. لمزيد من المعلومات، يُرجى قراءة مقالة التنزيل التلقائي للحزم المفقودة باستخدام Gradle.
- تتيح ميزة جديدة تجريبية للتخزين المؤقت لـ Gradle تسريع مدّة التصميم من خلال تحويل إلى ملفات .dex وتخزينها وإعادة استخدام الإصدارات التي تم تحويلها إلى ملفات .dex من مكتباتك. لمزيد من المعلومات حول استخدام هذه الميزة التجريبية، يُرجى قراءة دليل ذاكرة التخزين المؤقت للإنشاء.
- يتم تحسين أداء الإنشاء من خلال استخدام مسار جديد تلقائي للتعبئة والتغليف
يعالج عمليات الضغط والتوقيع والمحاذاة في مهمة واحدة. يمكنك الرجوع إلى استخدام أدوات التعبئة والتغليف القديمة من خلال إضافة
android.useOldPackaging=trueإلى ملفgradle.properties. أثناء استخدام أداة التعبئة والتغليف الجديدة ، لا تتوفّر مهمةzipalignDebug. ومع ذلك، يمكنك إنشاء مهمة بنفسك من خلال استدعاءcreateZipAlignTask(String taskName, File inputFile, File outputFile)الطريقة. - يستخدم توقيع حزمة APK الآن مخطّط توقيع حزمة APK
الإصدار 2 بالإضافة إلى توقيع JAR التقليدي. تقبل جميع منصات Android حِزم APK الناتجة. يؤدي أي تعديل على حِزم APK هذه بعد التوقيع إلى إبطال توقيعات الإصدار
2 ويمنع التثبيت على الجهاز. لإيقاف هذه الميزة،
أضِف ما يلي إلى ملف
build.gradleعلى مستوى الوحدة:أنيق
android { ... signingConfigs { config { ... v2SigningEnabled false } } }
Kotlin
android { ... signingConfigs { create("config") { ... v2SigningEnabled = false } } }
- بالنسبة إلى عمليات الإنشاء التي تتضمّن ملفات DEX متعددة، يمكنك الآن استخدام قواعد ProGuard لتحديد الفئات التي يجب أن يجمّلها Gradle في ملف DEX الرئيسي لتطبيقك. بما أنّ
نظام Android يحمّل ملف DEX الرئيسي أولاً عند بدء تطبيقك، يمكنك
منح الأولوية لفئات معيّنة عند بدء التشغيل من خلال تجميعها في ملف DEX
الرئيسي. بعد إنشاء ملف إعداد ProGuard خاص بملف DEX الرئيسي، مرِّر مسار ملف الإعداد إلى Gradle باستخدام
buildTypes.multiDexKeepProguard. يختلف استخدام لغة النطاق الخاصة بلغة Gradle (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يمكنك أيضًا تحديد معالج تعليقات توضيحية في عملية الإنشاء وتمرير الوسيطات باستخدام لغة النطاق الخاصة بلغة Gradle (DSL)javaCompileOptions.annotationProcessorOptions {}في ملف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). |