الإصدار 2.2.0 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" (أيلول/سبتمبر 2016)
- التبعيات:
- جديد:
-
- يستخدم Gradle 2.14.1 الذي يتضمّن تحسينات في الأداء وميزات جديدة، ويصلح ثغرة أمنية تسمح بتصعيد الأذونات المحلية عند استخدام برنامج Gradle الخفي. لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات إصدار Gradle.
- باستخدام لغة برمجة
externalNativeBuild {}
، يتيح لك Gradle الآن الربط بمصادرك الأصلية وتجميع المكتبات الأصلية باستخدام CMake أو ndk-build. بعد إنشاء المكتبات المجمّعة من رموز برمجية أصلية، يُجمّعها Gradle في حزمة APK. للاطّلاع على مزيد من المعلومات عن استخدام CMake و ndk-build مع Gradle، يُرجى قراءة مقالة إضافة رمز C وC++ إلى مشروعك. - عند تشغيل عملية إنشاء من سطر الأوامر، يحاول Gradle الآن تنزيل أيّ مكوّنات أو تحديثات غير متوفّرة من حزمة SDK يعتمد عليها مشروعك تلقائيًا. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة التنزيل التلقائي للحِزم غير المتوفّرة باستخدام Gradle.
- تتيح ميزة التخزين المؤقت التجريبية الجديدة لـ Gradle تسريع مدّة الإنشاء من خلال تحويل ملف APK إلى ملف DEX مسبقًا وتخزينه وإعادة استخدامه في مكتباتك. لمزيد من المعلومات عن استخدام هذه الميزة التجريبية، يمكنك الاطّلاع على دليل إنشاء ذاكرة التخزين المؤقت.
- تحسين أداء عملية الإنشاء من خلال استخدام مسار جديد تلقائي لتعبئة التطبيقات
يمكنه التعامل مع ضغط الملفات وتوقيعها ومواءمتها في مهمة واحدة يمكنك
الرجوع إلى استخدام أدوات الحزمة القديمة من خلال إضافة
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 } } }
- بالنسبة إلى عمليات إنشاء حِزم متعددة بتنسيق DEX، يمكنك الآن استخدام قواعد ProGuard لتحديد
الفئات التي يجب أن يجمعها Gradle في ملف DEX الرئيسي لتطبيقك. بما أنّه
يحمِّل نظام Android ملف DEX الرئيسي أولاً عند بدء تشغيل تطبيقك،
يمكنك منح الأولوية لفئات معيّنة عند بدء التشغيل من خلال تجميعها في ملف DEX
الرئيسي. بعد إنشاء ملف إعدادات ProGuard خصيصًا لملف ملف DEXE الرئيسي، يمكنك تمرير مسار ملف الإعدادات إلى Gradle باستخدام
buildTypes.multiDexKeepProguard
. يختلف استخدام لغة الترميز هذه عن استخدام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 {}
فيملف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")) } } } }
إذا كنت تريد تطبيق معالج تعليقات توضيحية أثناء عملية compiling ولكن لا تريد تضمينه في حزمة 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 }
- بشكلٍ تلقائي، إذا كان حجم ذاكرة heap لخادم Gradle غير القابل للتشغيل في الخلفية هو 1.5
غيغابايت على الأقل، سيتم تشغيل Jack الآن في العملية نفسها التي يتم فيها تشغيل Gradle. لضبط حجم ملف heap الخاص بالديمون، أضِف ما يلي إلى ملف
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. |