افزایه Android Gradle 2.2.0 (سپتامبر ۲۰۱۶)
- وابستگیها:
- جدید:
-
- از Gradle 2.14.1 استفاده میکند که شامل بهبود عملکرد و ویژگیهای جدید است و آسیبپذیری امنیتی را که هنگام استفاده از Gradle daemon اجازه میدهد امتیازهای محلی افزایش یابد رفع میکند. برای جزئیات بیشتر، یادداشتهای انتشار 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 امکان میدهد با پیشدکس کردن، ذخیره کردن، و استفاده مجدد از نسخههای پیشدکسشده کتابخانههایتان، زمان ساخت را تسریع کند. برای کسب اطلاعات بیشتر درباره استفاده از این ویژگی آزمایشی، راهنمای ساختن حافظه نهان را بخوانید.
- با اتخاذ خط لوله بستهبندی پیشفرض جدیدی که فشردهسازی، امضا، و تراز کردن را در یک وظیفه انجام میدهد، عملکرد ساخت را بهبود میبخشد. با افزودن
android.useOldPackaging=trueبه فایلgradle.propertiesمیتوانید به استفاده از ابزارهای بستهبندی قدیمیتر برگردید. هنگام استفاده از ابزار بستهبندی جدید، وظیفهzipalignDebugدردسترس نیست. بااینحال، با فراخوانی روشcreateZipAlignTask(String taskName, File inputFile, File outputFile)میتوانید خودتان آن را ایجاد کنید. - امضای APK اکنون علاوهبر امضای استاندارد JAR از طرح امضای APK نسخه ۲ استفاده میکند. همه پلاتفرمهای Android فایلهای APK
حاصل را میپذیرند. هرگونه تغییر در این فایلهای APK پساز امضا کردن، امضاهای v2 آنها را نامعتبر میکند و مانع نصب در دستگاه میشود. برای غیرفعال کردن این ویژگی،
موارد زیر را به فایل
build.gradleسطح واحد خود اضافه کنید:شیک
android { ... signingConfigs { config { ... v2SigningEnabled false } } }
کاتلین
android { ... signingConfigs { create("config") { ... v2SigningEnabled = false } } }
- برای ساختهای multidex، اکنون میتوانید از قوانین ProGuard استفاده کنید تا تعیین کنید Gradle کدام کلاسها را در فایل DEX اصلی برنامه شما کامپایل کند. چون
سیستم Android هنگام شروع برنامه شما ابتدا فایل DEX اصلی را بار میکند،
میتوانید با تبدیل کردن کلاسهای خاص به فایل DEX اصلی، آنها را در زمان شروع
برنامه در اولویت قرار دهید. پساز ایجاد فایل پیکربندی ProGuard بهطور خاص برای
فایل اصلی DEX، مسیر فایل پیکربندی را بااستفاده از
buildTypes.multiDexKeepProguardبه Gradle منتقل کنید. استفاده از این زبان توصیفی متفاوت است از استفاده ازbuildTypes.proguardFiles، که قوانین کلی ProGuard را برای برنامه شما ارائه میدهد و کلاسهای فایل اصلی DEX را مشخص نمیکند. - از پرچم
android:extractNativeLibsپشتیبانی میکند، که میتواند اندازه برنامه شما را هنگام نصب آن در دستگاه کاهش دهد. وقتی این پرچم را رویfalseدر عنصر<application>مانیفست برنامه تنظیم میکنید، Gradle نسخههای فشردهنشده و ترازشده کتابخانههای C/C++ را با APK بستهبندی میکند. این از کپی شدن کتابخانههای C/C++ شما از APK به سیستم فایلPackageManagerدستگاه درطول نصب جلوگیری میکند و مزیت اضافه کوچکتر شدن بهروزرسانیهای تفاضلی برنامه شما را دارد. - اکنون میتوانید
versionNameSuffixوapplicationIdSuffixرا برای طعمهای محصول مشخص کنید. (Issue 59614)
- تغییرات:
-
-
getDefaultProguardFileاکنون فایلهای پیشفرض ProGuard را که افزایه Android برای Gradle ارائه میدهد برمیگرداند و دیگر از فایلهای موجود در «کیت توسعه نرمافزار 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' ] } } } }
کاتلین
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 }
کاتلین
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 حداقل ۱٫۵ گیگابایت باشد، 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 | ۲.۱۴.۱ | ۲.۱۴.۱ | برای کسب اطلاعات بیشتر، بهروزرسانی Gradle را ببینید. |
| ابزارهای ساخت کیت توسعه نرمافزار | ۲۳.۰.۲ | ۲۳.۰.۲ | «ابزارهای ساخت کیت توسعه نرمافزار» را نصب یا پیکربندی کنید. |