پلاگین Android Gradle 3.3.0 (ژانویه 2019)

این نسخه از افزونه اندروید به موارد زیر نیاز دارد:

حداقل نسخه نسخه پیش فرض یادداشت ها
گریدل 4.10.1 4.10.1 برای کسب اطلاعات بیشتر، به روز رسانی Gradle را ببینید. هنگام استفاده از Gradle 5.0 و بالاتر، اندازه پیش‌فرض پشته حافظه Daemon Gradle از 1 گیگابایت به 512 مگابایت کاهش می‌یابد. این ممکن است منجر به رگرسیون عملکرد ساخت شود. برای نادیده گرفتن این تنظیم پیش‌فرض، اندازه پشته شبح Gradle را در فایل gradle.properties پروژه خود مشخص کنید.
ابزارهای ساخت SDK 28.0.3 28.0.3 ابزارهای ساخت SDK را نصب یا پیکربندی کنید .

3.3.3 (ژوئیه 2020)

این به‌روزرسانی جزئی از سازگاری با تنظیمات و ویژگی‌های پیش‌فرض جدید برای مشاهده بسته در Android 11 پشتیبانی می‌کند.

برای جزئیات به یادداشت های انتشار 4.0.1 مراجعه کنید.

3.3.2 (مارس 2019)

این به‌روزرسانی کوچک از اندروید استودیو 3.3.2 پشتیبانی می‌کند و شامل رفع اشکال‌های مختلف و بهبود عملکرد است. برای مشاهده لیستی از رفع اشکال قابل توجه، پست مربوطه را در وبلاگ Release Updates بخوانید.

3.3.1 (فوریه 2019)

این به‌روزرسانی کوچک از اندروید استودیو 3.3.1 پشتیبانی می‌کند و شامل رفع اشکال‌های مختلف و بهبود عملکرد است.

ویژگی های جدید

  • همگام سازی مسیر کلاس بهبود یافته: هنگام حل وابستگی ها در زمان اجرا و کامپایل مسیرهای کلاسی زمان، افزونه Android Gradle سعی می کند تضادهای نسخه پایین دستی خاصی را برای وابستگی هایی که در چندین مسیر کلاس ظاهر می شوند برطرف کند.

    به عنوان مثال، اگر مسیر کلاسی زمان اجرا شامل Library A نسخه 2.0 و مسیر کلاس کامپایل شامل Library A نسخه 1.0 باشد، افزونه به طور خودکار وابستگی به مسیر کلاس کامپایل را به کتابخانه A نسخه 2.0 به روز می کند تا از خطا جلوگیری کند.

    با این حال، اگر مسیر کلاس زمان اجرا شامل Library A نسخه 1.0 و کامپایل شامل Library A نسخه 2.0 باشد، افزونه وابستگی به مسیر کلاس کامپایل را به Library A نسخه 1.0 کاهش نمی دهد و با خطا مواجه می شوید. برای کسب اطلاعات بیشتر، به رفع تداخل بین مسیرهای کلاس مراجعه کنید.

  • بهبود کامپایل افزایشی جاوا هنگام استفاده از پردازنده های حاشیه نویسی: این به روز رسانی با بهبود پشتیبانی از کامپایل تدریجی جاوا هنگام استفاده از پردازنده های حاشیه نویسی، زمان ساخت را کاهش می دهد.

    توجه: این ویژگی با Gradle 4.10.1 و بالاتر سازگار است، به جز Gradle 5.1 به دلیل شماره Gradle 8194 .

    • برای پروژه‌هایی که از Kapt استفاده می‌کنند (اکثر پروژه‌های فقط Kotlin و پروژه‌های ترکیبی Kotlin-Java): کامپایل افزایشی جاوا فعال است، حتی زمانی که از اتصال داده یا افزونه retro-lambda استفاده می‌کنید. پردازش حاشیه نویسی توسط وظیفه Kapt هنوز افزایشی نیست.

    • برای پروژه‌هایی که از Kapt استفاده نمی‌کنند (پروژه‌های فقط جاوا): اگر پردازنده‌های حاشیه‌نویسی که شما استفاده می‌کنید از پردازش حاشیه‌نویسی افزایشی پشتیبانی می‌کنند، کامپایل تدریجی جاوا به‌طور پیش‌فرض فعال است. برای نظارت بر پذیرش پردازشگر حاشیه نویسی افزایشی، شماره 5277 Gradle را تماشا کنید.

      با این حال، اگر یک یا چند پردازنده حاشیه نویسی از ساخت های افزایشی پشتیبانی نمی کنند، کامپایل تدریجی جاوا فعال نمی شود. در عوض، می توانید پرچم زیر را در فایل gradle.properties خود قرار دهید:

      android.enableSeparateAnnotationProcessing=true
                  

      وقتی این پرچم را اضافه می‌کنید، افزونه Android Gradle پردازنده‌های حاشیه‌نویسی را در یک کار جداگانه اجرا می‌کند و به کار کامپایل جاوا اجازه می‌دهد به صورت تدریجی اجرا شود.

  • اطلاعات اشکال‌زدایی بهتر هنگام استفاده از API منسوخ شده: وقتی افزونه تشخیص می‌دهد که از API استفاده می‌کنید که دیگر پشتیبانی نمی‌شود، اکنون می‌تواند اطلاعات دقیق‌تری ارائه دهد تا به شما کمک کند تعیین کنید آن API در کجا استفاده می‌شود. برای مشاهده اطلاعات اضافی، باید موارد زیر را در فایل gradle.properties پروژه خود قرار دهید:

              android.debug.obsoleteApi=true
            

    همچنین می توانید پرچم را با عبور -Pandroid.debug.obsoleteApi=true از خط فرمان فعال کنید.

  • می توانید تست های ابزار دقیق را روی ماژول های ویژگی از خط فرمان اجرا کنید.

تغییر رفتار

  • پیکربندی کار تنبل: این افزونه اکنون از API ایجاد وظیفه جدید Gradle برای جلوگیری از مقداردهی اولیه و پیکربندی وظایفی که برای تکمیل ساخت فعلی (یا کارهایی که در نمودار وظیفه اجرا نیستند) مورد نیاز نیستند، استفاده می کند. برای مثال، اگر چندین نوع ساخت مانند نسخه‌های ساخت «release» و «debug» دارید و نسخه «اشکال‌زدایی» برنامه خود را می‌سازید، این افزونه از تنظیم اولیه و پیکربندی وظایف برای نسخه «release» اجتناب می‌کند. برنامه شما

    فراخوانی برخی از روش‌های قدیمی‌تر در Variants API، مانند variant.getJavaCompile() ممکن است همچنان پیکربندی کار را مجبور کند. برای اطمینان از اینکه ساخت شما برای پیکربندی کار تنبل بهینه شده است، روش های جدیدی را فراخوانی کنید که در عوض یک شی TaskProvider را برمی گرداند، مانند variant.getJavaCompileProvider() .

    اگر وظایف ساخت سفارشی را اجرا می کنید، یاد بگیرید که چگونه با API ایجاد وظیفه جدید Gradle سازگار شوید .

  • برای یک نوع ساخت معین، هنگام تنظیم useProguard false ، افزونه اکنون به جای ProGuard از R8 استفاده می کند تا کد و منابع برنامه شما را کوچک و مبهم کند. برای کسب اطلاعات بیشتر در مورد R8، این پست وبلاگ را از وبلاگ توسعه دهندگان اندروید بخوانید.

  • تولید سریع‌تر کلاس R برای پروژه‌های کتابخانه: قبلاً، پلاگین Android Gradle یک فایل R.java برای هر یک از وابستگی‌های پروژه شما ایجاد می‌کرد و سپس آن کلاس‌های R را در کنار کلاس‌های دیگر برنامه‌تان کامپایل می‌کرد. این افزونه اکنون یک JAR حاوی کلاس R کامپایل شده برنامه شما را مستقیماً بدون ایجاد کلاس های R.java میانی تولید می کند. این بهینه‌سازی ممکن است عملکرد ساخت پروژه‌هایی را که شامل بسیاری از زیرپروژه‌ها و وابستگی‌های کتابخانه‌ای هستند، به‌طور قابل توجهی بهبود بخشد و سرعت نمایه‌سازی را در Android Studio بهبود بخشد.

  • هنگام ساخت یک Android App Bundle ، فایل‌های APK تولید شده از آن دسته برنامه که Android نسخه 6.0 (سطح API 23) یا بالاتر را هدف قرار می‌دهند، اکنون به‌طور پیش‌فرض شامل نسخه‌های فشرده‌نشده کتابخانه‌های بومی شما می‌شوند. این بهینه‌سازی از نیاز دستگاه به کپی کردن کتابخانه جلوگیری می‌کند و در نتیجه اندازه برنامه شما روی دیسک را کاهش می‌دهد. اگر ترجیح می دهید این بهینه سازی را غیرفعال کنید، موارد زیر را به فایل gradle.properties خود اضافه کنید:

    android.bundle.enableUncompressedNativeLibs = false
            
  • این افزونه حداقل نسخه های برخی از افزونه های شخص ثالث را اعمال می کند.

  • همگام‌سازی پروژه تک‌نوعی : همگام‌سازی پروژه با پیکربندی ساخت، گام مهمی است تا به Android Studio بفهمد ساختار پروژه شما چگونه است. با این حال، این فرآیند برای پروژه های بزرگ می تواند زمان بر باشد. اگر پروژه شما از چندین نوع ساخت استفاده می‌کند، اکنون می‌توانید همگام‌سازی پروژه را با محدود کردن آن‌ها به گونه‌ای که در حال حاضر انتخاب کرده‌اید بهینه کنید.

    برای فعال کردن این بهینه سازی باید از Android Studio نسخه 3.3 یا بالاتر با افزونه Android Gradle نسخه 3.3.0 یا بالاتر استفاده کنید. هنگامی که این الزامات را برآورده می کنید، IDE از شما می خواهد که هنگام همگام سازی پروژه خود، این بهینه سازی را فعال کنید. بهینه سازی نیز به طور پیش فرض در پروژه های جدید فعال است.

    برای فعال کردن این بهینه‌سازی به‌صورت دستی، روی File > Settings > Experimental > Gradle ( Android Studio > Preferences > Experimental > Gradle در Mac) کلیک کنید و کادر بررسی Only sync the active variant را انتخاب کنید.

    توجه : این بهینه سازی به طور کامل از پروژه هایی که شامل زبان های جاوا و سی پلاس پلاس هستند پشتیبانی می کند و تا حدودی از Kotlin پشتیبانی می کند. هنگام فعال کردن بهینه‌سازی برای پروژه‌هایی با محتوای Kotlin، همگام‌سازی Gradle به استفاده از انواع کامل در داخل بازمی‌گردد.

  • دانلود خودکار بسته‌های SDK گمشده : این قابلیت برای پشتیبانی از NDK گسترش یافته است. برای کسب اطلاعات بیشتر، دانلود خودکار بسته‌های گمشده با Gradle را بخوانید.

رفع اشکال

  • پلاگین Android Gradle 3.3.0 مشکلات زیر را برطرف می کند:

    • فرآیند ساخت با وجود فعال بودن Jetifier، android.support.v8.renderscript.RenderScript به جای نسخه AndroidX فراخوانی می کند.
    • درگیری‌ها به دلیل androidx-rs.jar از جمله annotation.AnyRes به‌صورت استاتیک.AnyRes
    • هنگام استفاده از RenderScript، دیگر لازم نیست نسخه Build Tools را به صورت دستی در فایل های build.gradle خود تنظیم کنید.