پلاگین Android Gradle 8.0.0 (آوریل 2023)

افزونه اندروید گریدل ۸.۰.۰ یک نسخه اصلی است که شامل مجموعه‌ای از ویژگی‌ها و بهبودهای جدید می‌شود.

سازگاری

حداقل نسخه نسخه پیش‌فرض یادداشت‌ها
گرادل ۸.۰ ۸.۰ برای کسب اطلاعات بیشتر، به به‌روزرسانی 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 در هنگام ساخت Compose با خطای ArrayIndexOutOfBoundsException
VerifyError: تأییدکننده هنگام استفاده از R8 با Kotlin 1.8.20 کلاس را رد کرد
R8 روی AGP 8 سرویس Google Fit را از کار می‌اندازد
درج اطلاعات فایل منبع با نام‌های باقیمانده که با نام‌های ورودی همپوشانی دارند، به درستی نمایش داده نمی‌شود.

افزونه اندروید گریدل ۸.۰.۱

مشکلات برطرف شده
شرینکر (R8)
خطا: "با شناسه داده شده در جدول، نیازی به نسخه خاصی نیست" پس از ارتقاء AGP 7.2.2 -> 7.4.0
R8 NullPointerException در markTypeAsLive AGP 7.4.1
[R8 4.0.53] خطای تأیید کلاس سخت در اندروید ۱۱

افزونه اندروید گریدل ۸.۰.۰

مشکلات برطرف شده
افزونه گرادل اندروید
شکست ساخت پوسته پوسته در وظیفه MergeResources
JavaPluginConvention و HasConvention منسوخ شده‌اند.
محل فایل اشتباه و ناسازگار برای API تبدیل جدید
افزونه‌ی Gradle اندروید نباید از تابع منسوخ‌شده‌ی GUtil.toWords(string) استفاده کند.
افزونه‌ی Gradle اندروید نباید از تابع منسوخ‌شده‌ی ConfigureUtil.configure(closure, target) استفاده کند.
به‌روزرسانی تست‌های AGP برای استفاده از KGP 1.7.20-Beta
Gradle 7.4 با شکست مواجه می‌شود (نمی‌توان نمونه‌ای از AnalyticsService ایجاد کرد)
"ثابت شمارشی ناشناخته" جدید از javac روی AGP 7.4.0-alpha09
پیکربندی MergeGeneratedProguardFilesCreationAction حتی با فعال بودن قابلیت ذخیره‌سازی پیکربندی، کند است.
[AGP] اضافه کردن دایرکتوری منبع تولید شده به مدل IDE (API نوع)
JavaPluginConvention و HasConvention منسوخ شده‌اند.
به طور پیش‌فرض ignorewarnings را به R8 اضافه نکنید
هشدار در صورت عدم وجود فایل‌های proguard
AGP 7.3.0 همگام‌سازی gradle را برای پروژه‌های پلتفرم gradle مختل می‌کند
کتابخانه apksig: ApkVerifier$Result.getV4SchemeSigners() به صورت خصوصی علامت‌گذاری شده است
اگر پوشش فعال نیست، ایجاد پیکربندی androidJacocoAnt را متوقف کنید
استفاده از @IntDef در یک کامپوننت کتابخانه‌ای، annotations.zip را در فایل aar ایجاد نمی‌کند.
نمی‌توان نوع فوق‌العاده رایج را برای آن پیدا کرد و
یک نسخه از ویژگی gradle با مقدار LINT_PRINT_STACKTRACE=true اضافه کنید.
مصنوعات پیش‌ساخته قدیمی در حال بسته‌بندی در AAR هستند
برای رفع هشدار منسوخ شدن و آماده شدن برای Gradle 9.0، از ویژگی destination به ویژگی outputLocation مهاجرت کنید
هنگام تنظیم وظیفه JavaCompile، پرچم `--release` را در نظر بگیرید
[AGP-7.3.0-beta03] تابع ShrinkResourcesNewShrinkerTask زمانی که یک خط خالی بعد از تعریف xml وجود داشته باشد، با شکست مواجه می‌شود.
هدف lintVital به طور پیش‌فرض در یک نوع اشکال‌زدایی اجرا می‌شود
هشدار در صورت عدم وجود فایل‌های proguard
AGP سعی می‌کند kotlinOptions.freeCompilerArgs را در مرحله اجرای وظیفه اضافه کند
همگام‌سازی گرادل ناموفق بود: همگام‌سازی ناموفق بود: دلیل نامعلوم
DependencyReportTask با حافظه پنهان پیکربندی سازگار نیست
بازنویسی منابع با resValue در build.gradle منجر به خطا می‌شود: منابع تکراری
نوع ساخت «اشکال‌زدایی» کلید امضای پیش‌فرض دارد، بقیه ندارند
استفاده از ویژگی‌های پویا و کاهش منابع باعث خرابی در زمان اجرا می‌شود
نوع ساخت «اشکال‌زدایی» کلید امضای پیش‌فرض دارد، بقیه ندارند
دایرکتوری منبع تولید شده به عنوان دایرکتوری جاوا در ارائه دهنده منبع اصلی مدل lint فهرست شده است
Gradle 8.0-milestone-2 باعث ایجاد خطا در AGP می‌شود
بهینه‌سازی ادغام مانیفست برای برنامه‌ها و کتابخانه
اضافه کردن gradle-settings-api به نسل javadoc
"ثابت شمارشی ناشناخته" جدید از javac روی AGP 7.4.0-alpha09
AGP 7.4.0-alpha09 نسخه‌هایی تولید می‌کند که در توزیع برنامه Firebase آپلود نمی‌شوند.
lint.xml در ماژول‌ها برای بررسی به‌روز بودن وظایف lint در نظر گرفته نمی‌شود.
مشکل افزونه Gradle اندروید نسخه ۷.۰+ و تست‌های اندروید: نمی‌توان منبع: id را پیدا کرد
configureCMakeDebug به طور ناگهانی با خطای اشاره‌گر تهی از کار می‌افتد
خطای دسترسی غیرقانونی در ارتقاء پروژه به AS2022.2.1.5، افزونه FireBasePerfPlugin
همگام‌سازی با خطای مرموز "مجموعه حاوی هیچ عنصری مطابق با گزاره نیست" با شکست مواجه می‌شود.
API ابزار دقیق، وابستگی‌های فایل محلی را تغییر نمی‌دهد.
خطای «AnnotationProcessorOptions.arguments مورد پرسش قرار گرفته است» هنگام به‌روزرسانی به نسخه ۷.۴ بتا ۱
افزونه‌های عمومی Gradle را به gradle-api منتقل کنید و BasePlugin.getExtension را حذف کنید
r8.jvmArgs عادت نمی‌کنند
JDK17 به عنوان نسخه حداقل مورد نیاز برای AGP
AGP 8.0.0 A8 پروفایل‌های پایه را می‌شکند
در پیام CheckAarMetadataTask در AGP 8.0، عبارت «compileSdkVersion» را به «compileSdk» تغییر دهید.
AGP 7.4.0-rc01 با عبارت «پرس‌وجوی مقدار نگاشت‌شده‌ی map(provider(java.util.Set)) قبل از تکمیل وظیفه‌ی '...' پشتیبانی نمی‌شود» API نوع Variant را از کار می‌اندازد.
مشکلات مربوط به حافظه پنهان پیکربندی در `com.android.build.gradle.tasks.ShaderCompile`
افزودن به منابع جاوا با استفاده از APIهای AGP، حافظه پنهان پیکربندی را از بین می‌برد.
افزونه Lint بخشی از gradle-api نیست
DexingFileDependenciesTask.outputKeepRules یک دایرکتوری است اما به عنوان OutputFile علامت‌گذاری شده است.
ارتقا به AGP 7.4 منجر به خطای StackOverflowError می‌شود.
processDebugUnitTestManifest در متغیرهای manifest برای انواع آزمایش با شکست مواجه می‌شود.
Lint بدون وابستگی به اطلاعات مجموعه‌های منبع دسترسی دارد
خطای ساخت به سطح API 34 اشاره دارد که وجود ندارد.
«توصیه می‌کنیم وقتی افزونه‌ی جدیدتری برای اندروید Gradle وجود ندارد، از افزونه‌ی جدیدتری استفاده کنید»
android.injected.testOnly=false کار نمی‌کند.
دکسر (D8)
خطای ادغام Dex مربوط به سینتیکس سراسری پس از ارتقاء AS Canary 6 به 7
کتابخانه فراداده کاتلین را به نسخه ۰.۶.۰ به‌روزرسانی کنید.
به نظر می‌رسد راه‌حل جایگزین برای JDK-8272564 در سطح API 28-30 مورد نیاز است.
پرز
بررسی نوع خط ResourceType برای منابع کاتلین کار نمی‌کند
VersionChecks بررسی‌های محدوده کاتلین را انجام نمی‌دهد
خطای مثبت کاذب برای InlinedApi هنگام بسته‌بندی
بازیافت Lint با خطای false positive در مورد openInputStream
[BuildTool/Lint] ویژگی سازنده ChecksSdkIntAtLeast
Lint: ادغام PartialResults به درستی کار نمی‌کند
اندروید استودیو به طور نامناسبی نسخه مشخص شده را به عنوان قدیمی علامت گذاری می‌کند.
خطای EP مربوط به AndroidDeprecationInspection.DeprecationFilter هرگز در فایل android-plugin.xml ثبت نمی‌شود.
توضیح بررسی پرز AccessibilityDetector قدیمی است
بررسی‌های Lint SDK_INT باید متغیرهای محلی موقت را درک کنند
خطا هنگام جایگزینی نوع تابع با typealias در TestMode.TYPE_ALIAS
اشکال: وقتی ObjectAnimator خارج از بلوک کد فعلی ایجاد می‌شود، هشدارهای مثبت کاذب مبنی بر عدم شروع آن وجود دارد #38
Lint: NPE به دلیل کوئری زدن به نمونه برنامه در حالت mergeOnly
قانون lint مربوط به NonConstantResourceId نمی‌تواند تشخیص دهد که مقادیر ثابت را از شناسه منبع اختصاص دهد.
عدم نمایش خطا در شناسه نمایش
عدم موفقیت در deserialize کردن حافظه پنهان منابع lint منجر به خطای lint می‌شود (اما باید یک هشدار باشد)
AGP Flamingo Alpha 8 Lint NewApi Desugar Regression
TypedArray#close (API 31) desugared نشده اما AS هنگام استفاده در try-with-resources هشداری نمایش نمی‌دهد.
Lint تبدیل‌های معتبر برای گیرنده‌های تماس را بررسی نمی‌کند.
Lint فقط تبدیل‌های ایمن را برای رابط‌های پیاده‌سازی‌شده‌ی مستقیم بررسی می‌کند، نه رابط‌های ارث‌بری‌شده را.
ادغام Lint
فایل پایه در حال حاضر یک ورودی و یک خروجی از وظایف Lint است.
شرینکر (R8)
خطای NPE / assertion در تأییدکننده فریم CF
رگرسیون پس از حذف حافظه پنهان جستجوی فیلد
`:app:minifyVariantWithR8` در AGP 7.4.0-beta02 خطای NullPointerException را ایجاد می‌کند.
R8: خطای ClassNotFoundException هنگام -allowaccessmodification
پشتیبانی از گیرنده‌های متن در فراداده را اضافه کنید
java.lang.VerifyError: تأییدکننده کلاس androidx.compose.ui.graphics.colorspace.o را رد کرد: void androidx.compose.ui.graphics.colorspace.o. ‎(java.lang.Object)‎ تأیید نشد: ‎void androidx.compose.ui.graphics.colorspace.o‎ (java.lang.Object): [0x0] نمی‌تواند از شیء از نوع مرجع دقیق: androidx.compose.ui.graphics.colorspace.na به فیلد نمونه java.lang.Object دسترسی پیدا کند.
AGP 7.4.0/7.3.1 - تلاش برای صف‌بندی یک عمل در یک لیست کاری صف‌بندی غیرقابل فشار
کوچک‌سازی کد رندراسکریپت: افت شدید عملکرد هنگام ارتقاء AGP از ۷.۳.۱ به ۷.۴.۰