افزایه Android Gradle نسخه ۳.۴.۰ (آوریل ۲۰۱۹)
این نسخه از افزایه Android به موارد زیر نیاز دارد:
| حداقل نسخه | نسخه پیشفرض | یادداشتها | |
|---|---|---|---|
| Gradle | 5.1.1 | 5.1.1 | برای کسب اطلاعات بیشتر، به بهروزرسانی Gradle مراجعه کنید. هنگام استفاده از Gradle نسخه ۵.۰ و بالاتر، اندازه پیشفرض پشته حافظه Gradle daemon از ۱ گیگابایت به ۵۱۲ مگابایت کاهش مییابد. این کار ممکن است منجر به پسرفت عملکرد ساخت شود. برای لغو این تنظیم پیشفرض، اندازه پشته Gradle daemon را در فایل gradle.properties پروژهتان مشخص کنید. |
| ابزارهای ساخت SDK | 28.0.3 | 28.0.3 | نصب یا پیکربندی ابزارهای ساخت کیت توسعه نرمافزار. |
این بهروزرسانی جزئی از سازگاری با تنظیمات پیشفرض جدید و ویژگیهای رؤیتپذیری بسته در Android 11 پشتیبانی میکند.
برای جزئیات، یادداشتهای انتشار نسخه ۴.۰.۱ را ببینید.
۳.۴.۲ (ژوئیه ۲۰۱۹)
این بهروزرسانی جزئی از Android Studio 3.4.2 پشتیبانی میکند و شامل رفع اشکالهای مختلف و بهبود عملکرد است. برای دیدن فهرست رفع اشکالهای مهم، پست مربوطه را در وبلاگ بهروزرسانیهای نسخه پخش بخوانید.
۳.۴.۱ (مه ۲۰۱۹)
این بهروزرسانی جزئی از Android Studio 3.4.1 پشتیبانی میکند و شامل رفع اشکالهای مختلف و بهبود عملکرد است. برای دیدن فهرست رفع اشکالهای مهم، پست مربوطه را در وبلاگ بهروزرسانیهای نسخه پخش بخوانید.
ویژگیهای جدید
-
پیکربندیهای جدید وابستگی بررسی lint: رفتار
lintChecksتغییر کرده است و پیکربندی وابستگی جدیدی بهنامlintPublishمعرفی شده است تا کنترل بیشتری بر اینکه کدام بررسیهای lint در کتابخانههای Android شما بستهبندی میشوند داشته باشید.-
lintChecks: این پیکربندی موجودی است که باید برای بررسیهای lint استفاده کنید که میخواهید فقط هنگام ساختن پروژه بهصورت محلی اجرا شوند. اگر قبلاً از پیکربندی وابستگیlintChecksبرای گنجاندن بررسیهای lint در AAR منتشرشده استفاده میکردید، باید آن وابستگیها را منتقل کنید تا بهجای آن از پیکربندی جدیدlintPublishاستفاده کنید. -
lintPublish: از این پیکربندی جدید در پروژههای کتابخانه برای بررسیهای lint که میخواهید در AAR منتشرشده گنجانده شود استفاده کنید، همانطور که در مثال زیر نشان داده شده است. این یعنی پروژههایی که از کتابخانه شما استفاده میکنند نیز آن بررسیهای lint را اعمال میکنند.
نمونه کد زیر از هر دو پیکربندی وابستگی در پروژه کتابخانه Android محلی استفاده میکند.
dependencies { // Executes lint checks from the ':lint' project at build time. lintChecks project(':lint') // Packages lint checks from the ':lintpublish' in the published AAR. lintPublish project(':lintpublish') }
dependencies { // Executes lint checks from the ':lint' project at build time. lintChecks(project(":lint")) // Packages lint checks from the ':lintpublish' in the published AAR. lintPublish(project(":lintpublish")) }
-
بهطور کلی، سرعت ساخت کلی برای کارهای بستهبندی و امضا کردن باید بهبود یابد. اگر متوجه پسرفت عملکردی مربوط به این تکالیف شدید، لطفاً اشکال را گزارش کنید.
-
تغییرات رفتاری
-
هشدار منسوخ شدن افزونه ویژگی «برنامههای فوری Android»: اگر هنوز از افزونه
com.android.featureبرای ساختن برنامه فوریتان استفاده میکنید، افزونه Android Gradle نسخه ۳.۴.۰ هشدار منسوخ شدن به شما خواهد داد. برای اطمینان از اینکه همچنان میتوانید برنامه فوریتان را در نسخههای آینده افزونه بسازید، برنامه فوریتان را به استفاده از افزونه ویژگی پویا منتقل کنید، که به شما امکان میدهد تجربههای برنامه نصبشده و فوریتان را از یک «دسته برنامه Android» منتشر کنید. -
R8 بهطور پیشفرض فعال است: R8 شکرزدایی، کوچک کردن، مبهمسازی، بهینهسازی، و dexing را در یک مرحله ادغام میکند. این کار منجر به بهبودهای قابلتوجهی در عملکرد ساخت میشود. R8 در افزایه Android Gradle نسخه ۳.۳.۰ معرفی شد و اکنون بهطور پیشفرض برای پروژههای برنامه و کتابخانه Android که از افزایه نسخه ۳.۴.۰ و بالاتر استفاده میکنند فعال است.
تصویر زیر نمای کلی سطح بالایی از فرایند کامپایل را قبلاز معرفی R8 ارائه میدهد.
اکنون با R8، شکرزدایی، کوچک کردن، مبهمسازی، بهینهسازی، و dexing (D8) همگی در یک مرحله تکمیل میشوند، همانطور که در زیر نشان داده شده است.
بهخاطر داشته باشید که R8 برای کار با قوانین ProGuard موجود شما طراحی شده است، بنابراین احتمالاً برای بهرهمندی از R8 نیازی به انجام هیچ اقدامی نخواهید داشت. بااینحال، چون این فناوری با ProGuard متفاوت است و بهطور خاص برای پروژههای Android طراحی شده است، کوچکسازی و بهینهسازی ممکن است منجر به حذف کدهایی شود که ProGuard ممکن است آنها را حذف نکرده باشد. بنابراین، در این وضعیت نامحتمل، ممکن است لازم باشد قوانین بیشتری اضافه کنید تا آن کد را در خروجی ساخت خود نگه دارید.
اگر هنگام استفاده از R8 با مشکلی مواجه شدید،
پرسشگان سازگاری R8 را بخوانید
تا ببینید آیا راهحلی برای مشکلتان وجود دارد یا نه. اگر راهحلی مستند نشده است،
لطفاً اشکال را گزارش کنید.
میتوانید R8 را با افزودن یکی از خطوط زیر به فایل gradle.properties پروژهتان غیرفعال کنید:
# Disables R8 for Android Library modules only.
android.enableR8.libraries = false
# Disables R8 for all modules.
android.enableR8 = false
توجه: برای نوع ساخت مشخص، اگر
useProguard را روی false در فایل build.gradle
مدول برنامهتان تنظیم کنید، افزونه Android Gradle از R8
برای کوچک کردن کد برنامهتان برای آن نوع ساخت استفاده میکند، صرفنظر از اینکه
R8 را در فایل gradle.properties پروژهتان غیرفعال کنید یا نه.
-
ndkCompileمنسوخ شده است: اکنون اگر بخواهید ازndkBuildبرای کامپایل کردن کتابخانههای بومیتان استفاده کنید، خطای ساخت دریافت میکنید. بهجای آن باید از CMake یا ndk-build برای افزودن کد C و C++ به پروژهتان استفاده کنید.
مشکلات شناختهشده
-
درحالحاضر استفاده صحیح از نامهای بسته منحصربهفرد اجباری نیست اما در نسخههای بعدی افزونه سختگیرانهتر خواهد شد. در افزایه Gradle نسخه ۳.۴.۰ برای Android، میتوانید با افزودن خط زیر به فایل
gradle.properties، موافقت کنید که بررسی شود آیا پروژه شما نامهای بسته قابلقبول را اعلام میکند یا نه.android.uniquePackageNames = trueبرای کسب اطلاعات بیشتر درباره تنظیم نام بسته ازطریق افزایه Android Gradle، تنظیم شناسه برنامه را ببینید.