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

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

תאימות

רמת ה-API המקסימלית שנתמכת ב-Android Gradle plugin 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 בסביבת הפיתוח המשולבת, מומלץ לבטל את כל אסימוני 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)

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

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

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

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

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

בעיות שתוקנו

Android Gradle Plugin 8.4.2

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

Android Gradle Plugin 8.4.1

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

Android Gradle Plugin 8.4.0

בעיות שתוקנו
פלאגין של Android Gradle
שיפור הודעת השגיאה לגבי הסיבה שבגללה אי אפשר להשתמש באפשרות ‎--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 Plugin 8.2.0 נכשלת בפרויקט שמשתמש בתכונות דינמיות
הקומפילציה של AIDL נכשלת עם IndexOutOfBoundsException: אינדקס 0 חורג מהגבולות של אורך 0
MergeJavaResourcesTask incremental inputs handling issue
‫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 של מסגרת הבדיקה של Lint לא מאפשר להגדיר גרסת ספרייה
‫Lint K2 UAST: UCallableReferenceExpression מדווח על qualifierType שגוי
זיהוי חיובי שגוי של Lint עם useK2Uast=true עם פונקציות בעלות עומס יתר
‫[BuildTool/Lint] בדיקת מאפיין constructor של ChecksSdkIntAtLeast
שילוב Lint
‫Lint לא הצליח לזהות את התלות ב-KMP