افزونه اندروید گریدل ۸.۰.۰ یک نسخه اصلی است که شامل مجموعهای از ویژگیها و بهبودهای جدید میشود.
سازگاری
| حداقل نسخه | نسخه پیشفرض | یادداشتها | |
|---|---|---|---|
| گرادل | ۸.۰ | ۸.۰ | برای کسب اطلاعات بیشتر، به بهروزرسانی Gradle مراجعه کنید. |
| ابزارهای ساخت SDK | ۳۰.۰.۳ | ۳۰.۰.۳ | ابزارهای ساخت SDK را نصب یا پیکربندی کنید . |
| ان دی کی | ناموجود | ۲۵.۱.۸۹۳۷۳۹۳ | نسخه دیگری از NDK را نصب یا پیکربندی کنید . |
| جیدیکی | ۱۷ | ۱۷ | برای کسب اطلاعات بیشتر، به تنظیم نسخه JDK مراجعه کنید. |
انتشار پچ
در زیر لیستی از نسخههای پچ برای افزونه اندروید Gradle نسخه ۸.۰ آمده است.
افزونه اندروید گریدل ۸.۰.۲ (مه ۲۰۲۳)
برای مشاهدهی فهرستی از اشکالات رفعشده در AGP 8.0.2، به مشکلات بستهشدهی اندروید استودیو ۲۰۲۲.۲.۱ مراجعه کنید.
افزونه اندروید گریدل ۸.۰.۱ (مه ۲۰۲۳)
این بهروزرسانی جزئی شامل رفع اشکالات زیر است:
| مشکلات برطرف شده | |
|---|---|
خطا: "با شناسه داده شده در جدول، نیازی به نسخه خاصی نیست" پس از ارتقاء AGP 7.2.2 -> 7.4.0 | |
R8 NullPointerException در markTypeAsLive AGP 7.4.1 | |
[R8 4.0.53] خطای تأیید کلاس سخت در اندروید ۱۱ | |
تغییر مهم: فضای نام مورد نیاز در اسکریپت ساخت سطح ماژول
شما باید فضای نام را در فایل build.gradle.kts در سطح ماژول تنظیم کنید، نه در فایل manifest. میتوانید از ویژگی namespace DSL با شروع AGP 7.3 استفاده کنید. برای کسب اطلاعات بیشتر، به بخش تنظیم فضای نام مراجعه کنید.
هنگام مهاجرت به فضای نام DSL، از موارد زیر آگاه باشید:
- نسخههای قبلی AGP در برخی موارد، فضای نام آزمایشی را از فضای نام اصلی یا شناسه برنامه به اشتباه استنباط میکنند. دستیار ارتقاء AGP اگر متوجه شود که فضای نام اصلی پروژه شما و فضای نام آزمایشی یکسان هستند، ارتقاء را مسدود میکند. اگر ارتقاء مسدود شود، باید به صورت دستی
testNamespaceتغییر داده و کد منبع خود را بر این اساس اصلاح کنید. - بعد از تغییر فضای نام تست، ممکن است کد شما کامپایل شود اما تستهای instrumented شما در زمان اجرا با شکست مواجه شوند. این اتفاق زمانی میافتد که کد منبع تست instrumented شما به منبعی که هم در
androidTestو هم در منابع برنامه شما تعریف شده است، ارجاع دهد.
برای اطلاعات بیشتر، به شماره #191813691، نظر #19 مراجعه کنید.
تغییرات فوری: مقادیر پیشفرض گزینه ساخت
با شروع از AGP 8.0، مقادیر پیشفرض این پرچمها برای بهبود عملکرد ساخت تغییر کردهاند. برای دریافت کمک در تنظیم کد خود برای پشتیبانی از برخی از این تغییرات، از دستیار ارتقاء AGP ( ابزارها > دستیار ارتقاء AGP ) استفاده کنید. دستیار ارتقاء شما را در بهروزرسانی کد خود برای تطبیق با رفتار جدید یا تنظیم پرچمها برای حفظ رفتار قبلی راهنمایی میکند.
| پرچم | مقدار پیشفرض جدید | مقدار پیشفرض قبلی | یادداشتها |
|---|---|---|---|
android.defaults.buildfeatures.buildconfig | false | true | AGP 8.0 به طور پیشفرض BuildConfig تولید نمیکند. شما باید این گزینه را با استفاده از DSL در پروژههایی که به آن نیاز دارید، مشخص کنید. |
android.defaults.buildfeatures.aidl | false | true | AGP 8.0 به طور پیشفرض پشتیبانی از AIDL را فعال نمیکند. شما باید این گزینه را با استفاده از DSL در پروژههایی که به آن نیاز دارید، مشخص کنید. قرار است این پرچم در AGP 9.0 حذف شود. |
android.defaults.buildfeatures.renderscript | false | true | AGP 8.0 به طور پیشفرض پشتیبانی از RenderScript را فعال نمیکند. شما باید این گزینه را با استفاده از DSL در پروژههایی که به آن نیاز دارید، مشخص کنید. قرار است این پرچم در AGP 9.0 حذف شود. |
android.nonFinalResIds | true | false | AGP 8.0 به طور پیشفرض کلاسهای R را با فیلدهای غیر نهایی تولید میکند. |
android.nonTransitiveRClass | true | false | AGP 8.0 کلاسهای R را فقط برای منابع تعریفشده در ماژول فعلی تولید میکند. |
android.enableR8.fullMode | true | false | AGP 8.0 به طور پیشفرض حالت کامل R8 را فعال میکند. برای جزئیات بیشتر، به حالت کامل R8 مراجعه کنید. |
تغییرات فوری: مقادیر اجباری گزینههای ساخت
با شروع از AGP 8.0، دیگر نمیتوانید مقادیر این پرچمها را تغییر دهید. اگر آنها را در فایل gradle.properties مشخص کنید، مقدار نادیده گرفته میشود و AGP هشدارهایی را چاپ میکند.
| پرچم | ارزش اجباری | یادداشتها |
|---|---|---|
android.dependencyResolutionAtConfigurationTime.warn | true | اگر AGP 8.0 در طول مرحله پیکربندی، تفکیکپذیری پیکربندی را تشخیص دهد، هشداری صادر میکند، زیرا این امر بر زمان پیکربندی Gradle تأثیر منفی میگذارد. |
android.r8.failOnMissingClasses | true | اگر کلاسهایی برای بهینهسازی بهتر DEX وجود نداشته باشند، AGP 8.0 در ساختهایی که از R8 استفاده میکنند، با شکست مواجه میشود. برای رفع این مشکل، باید کتابخانههای از دست رفته را اضافه کنید یا از قوانین -dontwarn keep استفاده کنید. برای جزئیات بیشتر، به هشدارهای کلاسهای از دست رفته در R8 shrinker مراجعه کنید. |
android.testConfig.useRelativePath | true | وقتی پشتیبانی از استفاده از منابع، داراییها و مانیفستهای اندروید در تستهای واحد فعال باشد، AGP 8.0 یک فایل test_config.properties تولید میکند که فقط شامل مسیرهای نسبی است. این تضمین میکند که تستهای واحد اندروید همیشه میتوانند از حافظه پنهان ساخت Gradle استفاده کنند. |
android.useNewJarCreator | true | AGP هنگام ایجاد فایلهای JAR از کتابخانه Zipflinger برای بهبود عملکرد ساخت استفاده میکند. |
android.bundletool.includeRepositoriesInDependencyReport | true | وقتی افزودن اطلاعات وابستگی SDK در AABها و APKها فعال باشد، AGP 8.0 فهرستی از مخازن پروژه را نیز به این اطلاعات اضافه میکند. برای کسب اطلاعات بیشتر، به اطلاعات وابستگی برای Play Console مراجعه کنید. |
android.enableArtProfiles | true | پروفایلهای پایه اکنون همیشه ایجاد میشوند. برای جزئیات بیشتر به پروفایلهای پایه مراجعه کنید. |
android.enableNewResourceShrinker | true | به طور پیشفرض از پیادهسازی جدید resource shinker استفاده کنید. resource shrinker جدید شامل پشتیبانی از ویژگیهای پویا است. |
android.enableSourceSetPathsMap | true | برای محاسبه نگاشتهای مسیر منابع نسبی استفاده میشود، بنابراین بیلدهای Gradle بیشتر بهروز میشوند. |
android.cacheCompileLibResources | true | منابع کتابخانه کامپایل شده اکنون میتوانند به طور پیشفرض ذخیره شوند زیرا Gradle فایلهای منابع را نسبت به موقعیت مکانی پروژه ردیابی میکند. برای این کار باید android.enableSourceSetPathsMap فعال باشد. |
android.disableAutomaticComponentCreation | true | AGP 8.0 به طور پیشفرض هیچ SoftwareComponent ایجاد نمیکند. در عوض، AGP فقط SoftwareComponentهایی را ایجاد میکند که برای انتشار با استفاده از DSL منتشرکننده پیکربندی شدهاند. |
پرچم پایدار جدید برای نمایه اجرا
AGP شامل پرچم جدید android.settings.executionProfile است. از این پرچم برای لغو نمایه اجرای پیشفرض از SettingsExtension استفاده کنید. برای کسب اطلاعات بیشتر، به مستندات افزونه settings مراجعه کنید.
برای پیشنمایش پرچمهای آزمایشی، به یادداشتهای انتشار پیشنمایش مراجعه کنید.
تخصیص ویژگی تنبل در کاتلین پشتیبانی نمیشود
اگر از Kotlin DSL مربوط به Gradle برای اسکریپتهای ساخت خود استفاده میکنید، توجه داشته باشید که اندروید استودیو و AGP 8.0 از انتساب آزمایشی ویژگی با استفاده از عملگر = پشتیبانی نمیکنند. برای اطلاعات بیشتر در مورد این ویژگی، به یادداشتها و مستندات انتشار مراجعه کنید.
دستهبندیهای وظایف تحلیلگر ساخت
با شروع از اندروید استودیو فلامینگو، Build Analyzer یک نمای پیشفرض جدید برای وظایفی که بر مدت زمان ساخت تأثیر میگذارند، دارد. اگر پروژه شما از AGP 8.0 یا بالاتر استفاده میکند، به جای نمایش وظایف به صورت جداگانه، Build Analyzer آنها را بر اساس دسته گروهبندی میکند. به عنوان مثال، وظایف خاص برای منابع اندروید، کاتلین یا Dexing با هم گروهبندی شده و سپس بر اساس مدت زمان ساخت مرتب میشوند. این امر تشخیص اینکه کدام دسته بیشترین تأثیر را بر زمان ساخت دارد را آسان میکند. گسترش هر دسته، لیستی از وظایف مربوطه را نمایش میدهد. برای نمایش وظایف به صورت جداگانه، بدون گروهبندی، از منوی کشویی Group by استفاده کنید.

افزونه تنظیمات جدید
AGP 8.0.0-alpha09 افزونه تنظیمات جدید را معرفی میکند. افزونه تنظیمات به شما امکان میدهد پیکربندیهای سراسری - پیکربندیهایی که برای همه ماژولها اعمال میشوند - را در یک مکان متمرکز کنید، بنابراین نیازی به کپی و چسباندن پیکربندیها در چندین ماژول ندارید. علاوه بر این، میتوانید از افزونه تنظیمات برای ایجاد پروفایلهای اجرای ابزار یا دستورالعملهای مختلف برای نحوه اجرای یک ابزار و جابجایی بین آنها استفاده کنید.
برای استفاده از افزونه تنظیمات، افزونه را در فایل settings.gradle اعمال کنید:
apply plugin 'com.android.settings'
متمرکز کردن پیکربندیهای سراسری
برای پیکربندی تنظیمات سراسری، از بلوک جدید android در فایل settings.gradle استفاده کنید. در اینجا مثالی آورده شده است:
android {
compileSdk 31
minSdk 28
...
}
پروفایلهای اجرای ابزار
افزونه تنظیمات همچنین به شما امکان میدهد پروفایلهای اجرایی برای برخی از ابزارها ایجاد کنید. یک پروفایل اجرایی نحوه اجرای یک ابزار را تعیین میکند؛ میتوانید بسته به محیط، پروفایلهای اجرایی مختلفی را انتخاب کنید. در یک پروفایل اجرایی، میتوانید آرگومانهای JVM را برای یک ابزار تنظیم کرده و آن را طوری پیکربندی کنید که در یک فرآیند جداگانه اجرا شود. در حال حاضر، فقط ابزار R8 پشتیبانی میشود.
همانطور که در مثال زیر نشان داده شده است، پروفایلهای اجرا ایجاد کنید و پروفایل اجرای پیشفرض را در فایل settings.gradle تنظیم کنید:
android {
execution {
profiles {
high {
r8 {
jvmOptions += ["-Xms2048m", "-Xmx8192m", "-XX:+HeapDumpOnOutOfMemoryError"]
runInSeparateProcess true
}
}
low {
r8 {
jvmOptions += ["-Xms256m", "-Xmx2048m", "-XX:+HeapDumpOnOutOfMemoryError"]
runInSeparateProcess true
}
}
ci {
r8.runInSeparateProcess false
}
}
defaultProfile "low"
}
}
برای لغو پروفایل پیشفرض، با استفاده از ویژگی android.experimental.settings.executionProfile در فایل gradle.properties یک پروفایل متفاوت انتخاب کنید:
android.experimental.settings.executionProfile=high
همچنین میتوانید این ویژگی را با استفاده از خط فرمان تنظیم کنید، که به شما امکان میدهد گردشهای کاری مختلفی را تنظیم کنید. به عنوان مثال، اگر یک گردش کار یکپارچهسازی مداوم دارید، میتوانید از خط فرمان برای تغییر نمایه اجرا بدون نیاز به تغییر فایل settings.gradle استفاده کنید:
./gradlew assembleRelease \
-Pandroid.experimental.settings.executionProfile=ci
برای اجرای AGP 8.0 به JDK 17 نیاز است.
هنگام استفاده از افزونه اندروید گریدل ۸.۰ برای ساخت برنامه خود، اکنون JDK 17 برای اجرای Gradle مورد نیاز است. اندروید استودیو فلامینگو JDK 17 را به صورت پیشفرض در خود جای داده و Gradle را برای استفاده از آن پیکربندی میکند، به این معنی که اکثر کاربران اندروید استودیو نیازی به ایجاد هیچ تغییر پیکربندی در پروژههای خود ندارند.
اگر نیاز دارید که نسخه JDK مورد استفاده توسط AGP را در اندروید استودیو به صورت دستی تنظیم کنید ، باید از JDK 17 یا بالاتر استفاده کنید.
هنگام استفاده از AGP مستقل از اندروید استودیو، نسخه JDK را با تنظیم متغیر محیطی JAVA_HOME یا گزینه خط فرمان -Dorg.gradle.java.home در دایرکتوری نصب JDK 17 خود ارتقا دهید.
مشکلات برطرف شده
افزونه اندروید گریدل ۸.۰.۲
| مشکلات برطرف شده | |||||
|---|---|---|---|---|---|
| شرینکر (R8) |
| ||||
افزونه اندروید گریدل ۸.۰.۱
| مشکلات برطرف شده | ||||
|---|---|---|---|---|
| شرینکر (R8) |
| |||
افزونه اندروید گریدل ۸.۰.۰
| مشکلات برطرف شده | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| افزونه گرادل اندروید |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| دکسر (D8) |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| پرز |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ادغام Lint |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| شرینکر (R8) |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||