الإصدار 2.2.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android (أيلول (سبتمبر) 2016)
- التبعيات:
-
- Gradle 2.14.1 أو أعلى
- الإصدار 23.0.2 من أدوات الإنشاء أو إصدار أحدث.
- جديد:
-
- يستخدم Gradle 2.14.1، الذي يتضمّن تحسينات في الأداء وميزات جديدة، ويصلح ثغرة أمنية تسمح بتصعيد الامتيازات المحلية عند استخدام البرنامج الخفي Gradle. لمزيد من التفاصيل، راجِع ملاحظات إصدار Gradle.
- باستخدام
externalNativeBuild {}
DSL، يتيح لك Gradle الآن الربط بمصادرك الأصلية وتجميع المكتبات الأصلية باستخدام CMake أو ndk-build. بعد إنشاء مكتباتك الأصلية، تدمجها Gradle في حزمة APK. لمعرفة المزيد من المعلومات حول استخدام CMake وndk-build مع Gradle، يمكنك قراءة مقالة إضافة رمز C وC++ إلى مشروعك. - عند تشغيل إصدار من سطر الأوامر، يحاول Gradle الآن التنزيل التلقائي لأي مكوّنات أو تحديثات غير متوفّرة من حزمة SDK يعتمد عليها مشروعك. لمزيد من المعلومات، اطّلِع على مقالة التنزيل التلقائي للحِزم المفقودة باستخدام Gradle.
- توفّر ميزة التخزين المؤقت التجريبية الجديدة لنظام Gradle المستخدم تسريع وقت الإنشاء من خلال تنقيح إصدارات مكتباتك مسبقًا وتخزينها وإعادة استخدامها. للاطّلاع على مزيد من المعلومات حول استخدام هذه الميزة التجريبية، يمكنك الاطّلاع على دليل إنشاء ذاكرة تخزين مؤقت.
- يساعد هذا في تحسين أداء الإصدار من خلال اعتماد مسار تغليف تلقائي جديد للحزمة يعالج الضغط والتوقيع ومحاذاة الضغط في مهمة واحدة. يمكنك
العودة إلى استخدام أدوات التغليف القديمة من خلال إضافة
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 } } }
- بالنسبة إلى الإصدارات المتعددة اللغات، يمكنك الآن استخدام قواعد 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 وميزاته:
- يتيح جاك الآن تغطية اختبار 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 }
للحصول على قائمة بالمعلمات التي يمكنك تعيينها، شغِّل ما يلي من سطر الأوامر:
java -jar /build-tools/jack.jar --help-properties
- يتيح جاك الآن تغطية اختبار Jacoco عند ضبط
- بشكل تلقائي، إذا كان حجم كومة الذاكرة المؤقتة لـ Gradle يصل إلى 1.5 غيغابايت على الأقل، يتم تشغيل Jack الآن في العملية نفسها التي يتّبعها Gradle. لضبط حجم كومة الذاكرة المؤقتة، أضِف ما يلي إلى ملف
gradle.properties
:# This sets the daemon heap size to 1.5GB. org.gradle.jvmargs=-Xmx1536M
-
يعرض