افزایه Android Gradle نسخه ۸.۰.۰ یک نسخه پخش عمده است که شامل انواع مختلفی از ویژگیهای جدید و بهبودها است.
سازگاری
| حداقل نسخه | نسخه پیشفرض | یادداشتها | |
|---|---|---|---|
| Gradle | ۸.۰ | ۸.۰ | برای کسب اطلاعات بیشتر، بهروزرسانی Gradle را ببینید. |
| ابزارهای ساخت کیت توسعه نرمافزار | ۳۰.۰.۳ | ۳۰.۰.۳ | «ابزارهای ساخت کیت توسعه نرمافزار» را نصب یا پیکربندی کنید. |
| NDK | موجود نیست | 25.1.8937393 | نسخه دیگری از NDK را نصب یا پیکربندی کنید. |
| JDK | 17 | 17 | برای کسب اطلاعات بیشتر، تنظیم نسخه JDK را ببینید. |
نسخههای پخش وصله
در زیر فهرستی از نسخههای وصله برای «افزایه Android Gradle» نسخه ۸.۰ آمده است.
افزایه Android Gradle نسخه 8.0.2 (مه ۲۰۲۳)
برای دیدن فهرست اشکالات برطرفشده در AGP 8.0.2، به مسائل بستهشده Android Studio 2022.2.1 مراجعه کنید.
افزایه Android Gradle 8.0.1 (مه ۲۰۲۳)
این بهروزرسانی جزئی شامل رفع اشکالات زیر است:
| مشکلات برطرفشده | |
|---|---|
|
خطا: «No VersionRequirement with the given id in the table» (هیچ «ملزومات نسخه» با شناسه دادهشده در جدول وجود ندارد) پساز ارتقا دادن AGP از نسخه ۷.۲.۲ به ۷.۴.۰
|
|
|
R8 NullPointerException در markTypeAsLive AGP 7.4.1
|
|
|
[R8 4.0.53] درستیسنجی کلاس سخت در Android 11 ناموفق بود
|
|
تغییر مخرب: فضای نام در دستورگان ساخت سطح واحد الزامی است
باید فضای نام را در فایل build.gradle.kts سطح واحد تنظیم کنید، نه در فایل مانیفست. میتوانید استفاده از دارایی namespace DSL را
از AGP 7.3 شروع کنید. برای کسب اطلاعات بیشتر، تنظیم فضای نام را ببینید.
هنگام انتقال به فضای نام DSL، از مشکلات زیر آگاه باشید:
- نسخههای قبلی AGP فضای نام آزمایش را از فضای نام اصلی یا
شناسه برنامه بهاشتباه در برخی موارد استنباط میکنند. اگر «دستیار ارتقا AGP» متوجه شود که فضای نام اصلی و فضای نام آزمایش پروژه شما یکسان است، ارتقا را مسدود میکند. اگر ارتقا مسدود شده است، باید
testNamespaceرا بهصورت دستی تغییر دهید و کد منبع خود را مطابق با آن اصلاح کنید. - پساز تغییر فضای نام آزمایش، ممکن است کد شما کامپایل شود
اما آزمایشهای ابزاری شما در زمان اجرا ناموفق باشد. این اتفاق میتواند زمانی رخ دهد که کد منبع آزمایش ابزاری شما به منبعی ارجاع دهد که هم در منبع
androidTestو هم در منبع برنامه تعریف شده است.
برای اطلاعات بیشتر، مشکل شماره ۱۹۱۸۱۳۶۹۱ نظر شماره ۱۹ را ببینید.
تغییرات ناگهانی: مقادیر پیشفرض گزینه ساخت
از 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 را بهطور پیشفرض فعال نمیکند. باید این گزینه را بااستفاده از زبان دامنه خاص در پروژههایی که به آن نیاز دارید مشخص کنید. این پرچم برنامهریزی شده است که در 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 را اضافه کنید. برای جزئیات بیشتر،
هشدارهای کلاس ازدسترفته در کوچککننده R8 را ببینید. |
android.testConfig.useRelativePath |
true |
وقتی پشتیبانی از استفاده از منابع، داراییها، و مانیفستهای Android در
آزمایشهای واحد فعال باشد، AGP 8.0 فایل
test_config.properties را تولید میکند که فقط حاوی مسیرهای
نسبی است. این کار تضمین میکند که آزمایشهای واحد Android همیشه بتوانند از حافظه نهان ساخت Gradle استفاده کنند. |
android.useNewJarCreator |
true |
AGP هنگام ایجاد فایلهای JAR از کتابخانه Zipflinger استفاده میکند تا عملکرد ساخت را بهبود دهد. |
android.bundletool.includeRepositoriesInDependencyReport |
true |
وقتی افزودن اطلاعات وابستگی کیت توسعه نرمافزار در AAB و APK فعال باشد، «افزایه Google برای Android» نسخه ۸.۰ فهرست مخزنهای پروژه را نیز به این اطلاعات اضافه میکند. برای کسب اطلاعات بیشتر، اطلاعات وابستگی برای «کنسول Play» را ببینید. |
android.enableArtProfiles |
true |
اکنون نمایههای مبنا همیشه تولید میشوند. برای جزئیات، نمایههای مبنا را ببینید. |
android.enableNewResourceShrinker |
true |
از پیادهسازی جدید کوچککننده منبع بهطور پیشفرض استفاده کنید. کوچککننده منبع جدید از ویژگیهای پویا پشتیبانی میکند. |
android.enableSourceSetPathsMap |
true |
برای محاسبه نگاشتهای مسیر منبع نسبی استفاده میشود، بنابراین ساختهای Gradle اغلب بهروز هستند. |
android.cacheCompileLibResources |
true |
اکنون منابع کتابخانه کامپایلشده بهطور پیشفرض میتوانند ذخیره شوند زیرا Gradle
فایلهای منبع را نسبتبه مکان پروژه ردیابی میکند. برای فعال شدن به
android.enableSourceSetPathsMap نیاز دارد. |
android.disableAutomaticComponentCreation |
true |
AGP 8.0 بهطور پیشفرض «عنصر نرمافزار» ایجاد نمیکند. درعوض، AGP «عناصر نرمافزاری» را فقط برای گونههایی ایجاد میکند که برای انتشار بااستفاده از DSL انتشار پیکربندی شدهاند. |
پرچم پایدار جدید برای نمایه اجرا
AGP پرچم جدید android.settings.executionProfile را دربرمیگیرد. از این پرچم برای
لغو کردن نمایه اجرای پیشفرض از SettingsExtension استفاده کنید. برای
کسب اطلاعات بیشتر، مستندات افزایه تنظیمات را ببینید.
برای پیشنمایش پرچمهای آزمایشی، یادداشتهای انتشار پیشنمایش را ببینید.
تخصیص دارایی تنبل Kotlin پشتیبانی نمیشود
اگر از Kotlin DSL در Gradle برای ساختن فایلهای ساخت استفاده میکنید، توجه داشته باشید که Android Studio و AGP 8.0 از تخصیص ویژگی آزمایشی بااستفاده از عملگر = پشتیبانی نمیکنند. برای کسب اطلاعات بیشتر درباره این ویژگی، به
یادداشتهای انتشار و مستندات مراجعه کنید.
دستههای تکلیف «تجزیهوتحلیلگر ساخت»
از Android Studio Flamingo، «تحلیلگر ساخت» نمای پیشفرض جدیدی برای وظایفی دارد که بر مدت ساخت تأثیر میگذارند. اگر پروژهتان از AGP 8.0 یا بالاتر استفاده میکند، بهجای نمایش تکالیف بهصورت جداگانه، «تجزیهوتحلیلگر ساخت» آنها را براساس دسته گروهبندی میکند. برای مثال، وظایف مربوط به «منابع Android»، «Kotlin»، یا «Dexing» با هم گروهبندی میشوند و سپس براساس مدت ساخت مرتب میشوند. این کار به شما کمک میکند دسته با بیشترین تأثیر بر زمان ساخت را شناسایی کنید. ازهم بازکردن هر دسته فهرستی از تکالیف مربوطه را نمایش میدهد. برای نمایش تکالیف بهصورت جداگانه، بدون گروهبندی، از منو کرکرهای گروهبندی براساس استفاده کنید.

افزایه تنظیمات جدید
AGP 8.0.0-alpha09 افزایه تنظیمات جدید را معرفی میکند. افزایه تنظیمات به شما امکان میدهد پیکربندیهای سراسری (پیکربندیهایی که برای همه واحدها اعمال میشود) را در یک مکان متمرکز کنید تا دیگر نیازی به کپی و جایگذاری پیکربندیها در چند واحد نداشته باشید. علاوهبراین، میتوانید از افزایه تنظیمات برای ایجاد نمایههای اجرای ابزار، یا دستورالعملهای مختلف برای نحوه اجرای ابزار، و جابهجایی بین آنها استفاده کنید.
برای استفاده از افزایه تنظیمات، افزایه را در فایل settings.gradle اعمال کنید:
apply plugin 'com.android.settings'
متمرکز کردن پیکربندیهای جهانی
برای پیکربندی پیکربندیهای سراسری، از بلوک جدید android در فایل
settings.gradle استفاده کنید. مثالی در اینجا ارائه شده است:
android {
compileSdk 31
minSdk 28
...
}
نمایههای اجرای ابزار
افزایه تنظیمات همچنین به شما امکان میدهد برای برخیاز ابزارها نمایههای اجرا ایجاد کنید. نمایه اجرایی تعیین میکند ابزار چگونه اجرا شود؛ بسته به محیط میتوانید نمایههای اجرایی مختلفی را انتخاب کنید. در نمایه اجرا، میتوانید آرگومانهای ماشین مجازی جاوا را برای ابزار تنظیم کنید و آن را برای اجرا در فرایندی جداگانه پیکربندی کنید. فقط از ابزار 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 نیاز است
هنگام استفاده از «افزایه Android Gradle» نسخه ۸.۰ برای ساختن برنامه، اکنون برای اجرای Gradle به JDK 17 نیاز است. Android Studio Flamingo JDK 17 را دستهبندی میکند و Gradle را پیکربندی میکند تا بهطور پیشفرض از آن استفاده کند، که یعنی اکثر کاربران Android Studio نیازی به ایجاد هیچگونه تغییر پیکربندی در پروژههایشان ندارند.
اگر نیاز دارید نسخه JDK مورد استفاده AGP را بهصورت دستی در Android Studio تنظیم کنید، باید از JDK 17 یا بالاتر استفاده کنید.
هنگام استفاده از AGP مستقل از «استودیو Android»، نسخه JDK را با تنظیم
JAVA_HOME متغیر محیطی یا
-Dorg.gradle.java.home گزینه خط فرمان به
دایرکتوری نصب JDK 17 ارتقا دهید.
مشکلات برطرفشده
افزایه Android Gradle نسخه ۸.۰.۲
| مشکلات برطرفشده | |||||
|---|---|---|---|---|---|
| Shrinker (R8) |
|
||||
افزایه Android Gradle نسخه ۸.۰.۱
| مشکلات برطرفشده | ||||
|---|---|---|---|---|
| Shrinker (R8) |
|
|||
افزایه Android Gradle نسخه ۸.۰.۰
| مشکلات برطرفشده | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| افزایه Android Gradle |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Dexer (D8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ادغام Lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Shrinker (R8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||