פלאגין Android Gradle 8.4.0 (אפריל 2024)

‫פלאגין של Android Gradle 8.4.0 הוא גרסה מרכזית שכוללת מגוון של תכונות ושיפורים חדשים.

תאימות

רמת ה-API המקסימלית שנתמכת בפלאגין של Android Gradle 8.4 היא 34. מידע נוסף על תאימות:

גרסת המינימום גרסת ברירת המחדל הערות
Gradle 8.6 8.6 יש מידע נוסף במאמר בנושא עדכון Gradle.
SDK Build Tools 34.0.0 34.0.0 צריך להתקין או להגדיר את SDK Build Tools.
NDK לא רלוונטי 26.1.10909125 צריך להתקין או להגדיר גרסה אחרת של NDK.
JDK 17 17 מידע נוסף זמין במאמר בנושא הגדרת גרסת ה-JDK.

אלה הפיצ'רים החדשים בפלאגין של Android Gradle 8.4.

גרסאות תיקון

בהמשך מפורטות גרסאות התיקון ב-Android Studio Jellyfish ובפלאגין של Android Gradle 8.4.

‫Android Studio Jellyfish | ‏ 2023.3.1 Patch 2 ו-AGP 8.4.2 (יוני 2024)

עדכון אבטחה חשוב: פגיעות אבטחה בתוסף GitHub שזמין ב-Android Studio Iguana | 2023.2.1 ובגרסאות מתקדמות יותר עלולה לחשוף טוקנים של גישה לצדדים לא מורשים.

התיקון: חברת Jetbrains פתרה את הבעיה במוצרי פלטפורמת IntelliJ, והתיקון זמין עכשיו ב-Android Studio Jellyfish | 2023.3.1 Patch 2 (2023.3.1.20).

אם כבר יש לכם גרסת build של Android Studio בערוץ היציב, תוכלו לקבל את העדכון בלחיצה על Help (עזרה) > Check for Updates (בדיקת עדכונים) (או על Android Studio > Check for Updates (בדיקת עדכונים) ב-macOS). אחרת, מורידים את הגרסה היציבה האחרונה.

בנוסף, אם השתמשתם באופן פעיל בפונקציונליות של בקשות משיכה ב-GitHub ב-IDE, מומלץ מאוד לבטל את כל אסימוני GitHub שנעשה בהם שימוש בתוסף. הפלאגין יכול להשתמש בשילוב OAuth או בטוקנים אישיים לגישה (PAT). לכן, צריך לבדוק את שתי האפשרויות ולבטל את הטוקנים לפי הצורך:

  • כדי לבטל את הגישה לשילוב OAuth, עוברים אל Applications > Authorized OAuth Apps ומבטלים את הגישה לטוקן JetBrains IDE Integration.
  • כדי לבטל את הגישה של PAT, עוברים אל Personal access tokens (אסימוני גישה אישיים) ומוחקים את האסימון שהונפק לתוסף GitHub. שם האסימון שמוגדר כברירת מחדל הוא IntelliJ IDEA GitHub integration plugin, אבל יכול להיות שאתם משתמשים בשם מותאם אישית.

אחרי ביטול הגישה לאסימונים, צריך להגדיר מחדש את הפלאגין כדי שכל התכונות שלו, כולל פעולות Git, יפעלו שוב.

אנחנו מתנצלים על אי הנוחות שנגרמה, וממליצים לכל המשתמשים לבצע עדכון באופן מיידי כדי להגן על הקוד והנתונים שלהם.

העדכון הקטן הזה כולל גם תיקוני באגים.

‫Android Studio Jellyfish | תיקון 1 בגרסה 2023.3.1 ו-AGP 8.4.1 (מאי 2024)

העדכון הקטן הזה כולל תיקוני באגים.

הכיתות בספרייה מצטמצמות

החל מ-Android Gradle Plugin 8.4, אם פרויקט של ספריית Android עובר מיניפיקציה, מחלקות תוכנה מצומצמות יפורסמו לפרסום בין פרויקטים. המשמעות היא שאם אפליקציה מסתמכת על גרסה מכווצת של פרויקטים משניים של ספריית Android, קובץ ה-APK יכלול מחלקות מכווצות של ספריית Android. יכול להיות שתצטרכו לשנות את כללי השמירה של הספריות אם יש מחלקות חסרות בקובץ ה-APK.

אם אתם יוצרים ומפרסמים AAR, קובצי JAR מקומיים שהספרייה שלכם תלויה בהם ייכללו ב-AAR ללא כיווץ, כלומר code shrinker לא יופעל עליהם.

כדי לחזור להתנהגות הקודמת, צריך להגדיר את הערך android.disableMinifyLocalDependenciesForLibraries בקובץ gradle.properties ולדווח על באג. בגרסאות עתידיות של AGP, הדגל הזה יוסר.

בעיות שתוקנו

Android Gradle plugin 8.4.2

בעיות שתוקנו
Android Gradle Plugin
נראה ש-AGP 8.4 מפסיק את ההורדות של GMD ב-CI

Android Gradle plugin 8.4.1

בעיות שתוקנו
Android Gradle Plugin
התרעה על הוצאה משימוש של תמיכה בטירגוט Java 8 ב-JDK 21
Dexer (D8)
‫java.lang.VerifyError: המאמת דחה את המחלקה
שגיאת המרה בפורמט R8 בגרסה חדשה אחרי טשטוש
יכול להיות שבניית ביניים לא תכלול תוכן סינתטי גלובלי מלא עבור stub

פלאגין של Android Gradle 8.4.0

בעיות שתוקנו
Android Gradle Plugin
שיפור הודעת השגיאה לגבי הסיבה שבגללה אי אפשר להשתמש באפשרות ‎--release ל-JavaCompile
השבתת שמירת המטמון של MergeSourceSetFolders באמצעות ‎ @DoNotCacheByDefault
לא ניתן להגדיר את גרסת JaCoCo ב-AGP 8.2.0
המאפיין isDebuggable חסר ב-DynamicFeatureBuildType
מחלקות של ספריות שעברו מיניפיקציה לא מתפרסמות בצורה תקינה לצריכה בין פרויקטים
הוספת Variant#sources API שמוציא קבצים שנוצרו
מודלים של AGP לא מכילים תלות בפרויקט java-platform
‫ExtractAarTransform יוצר classes.jar שאי אפשר לשחזר עבור קובצי AAR שאין להם classes.jar
אפשרות להגדיר את sourceInformation מ-ComposeOptions
Cannot find field: sdk_runtime in message android.bundle.DeviceSpec
תמיכה ב-compileOnlyApi
הכלי R8 נכשל במודול של ספרייה כשהאפשרות לעיבוד משאבים מושבתת
הוספנו את האפשרות לשנות את שם הארטיפקט במהלך טרנספורמציה
הוספת פלט של משימה ל-srcDir של sourceSets.androidMain.resources לא יוצרת יחסי תלות בין משימות
‫AndroidPluginVersion.toString()‎ לא כולל אפסים מובילים
ההגבלה של Artifacts.add(FileSystemLocation) צריכה להיות מחמירה יותר.
‫AGP 8.3.0-alpha11 יוצר קובץ APK לפרסום שקורס בהפעלה עם android.content.res.Resources$NotFoundException
משימת ההתקנה של פלאגין של Android Gradle 8.2.0 נכשלת בפרויקט שמשתמש בתכונות דינמיות
הקומפילציה של AIDL נכשלת עם IndexOutOfBoundsException: אינדקס 0 חורג מהטווח של אורך 0
בעיה בטיפול בקלט מצטבר ב-MergeJavaResourcesTask
‫AGP 8.3.0-alpha02 תלוי בספריות עם פגיעויות ידועות באבטחה
תבנית הפעילות שנבחרה דורשת פרויקט עם תלות ב-androidx.*
AGP Upgrade Assistent errouneously removes consumerProguardFiles from module
הכלי לשדרוג AGP נטען ללא הפסקה
‫SourceDirectories#static לא אמור להיות תלוי במשימה GenerateBuildConfig
גרסת טרום-השקה (Preview) של פיתוח נייטיב לא יכולה לטפל במחלקות מתלות של מעבר
‫AGP 8.3 מפסיק את משימת zipApksFor
ארטיפקטים של AndroidX Desktop שנארזו בחבילת APK של Android
Lint
‫GradleModelMocker של framework לבדיקת Lint לא מאפשר להגדיר גרסת ספרייה
‫Lint K2 UAST: UCallableReferenceExpression מדווח על qualifierType שגוי
זיהוי חיובי שגוי של Lint עם useK2Uast=true עם פונקציות בעלות עומס יתר
‫[BuildTool/Lint] מאפיין ה-constructor של ChecksSdkIntAtLeast
שילוב Lint
‫Lint לא הצליח לזהות את התלות ב-KMP