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

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

תאימות

רמת ה-API המקסימלית שנתמכת על ידי Android Gradle plugin 8.4 היא רמת API‏ 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 | תיקון 2 בגרסה 2023.3.1 ו-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).

אם כבר יש לכם גרסת Android Studio בערוץ היציב, תוכלו לקבל את העדכון על ידי לחיצה על עזרה > בדיקה אם יש עדכונים (או על Android Studio > בדיקה אם יש עדכונים ב-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‏ 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 Plugin 8.2.0 נכשלת בפרויקט שמשתמש בתכונות דינמיות
הקומפילציה של AIDL נכשלת עם IndexOutOfBoundsException: אינדקס 0 חורג מהטווח לאורך 0
בעיה בטיפול בקלט מצטבר ב-MergeJavaResourcesTask
‫AGP 8.3.0-alpha02 תלוי בספריות עם פגיעויות ידועות באבטחה
תבנית הפעילות שנבחרה דורשת פרויקט עם תלות ב-androidx.*
‫AGP Upgrade Assistent מסיר בטעות את consumerProguardFiles מהמודול
הכלי לשדרוג AGP נטען ללא הפסקה
‫SourceDirectories#static לא אמור להיות תלוי במשימה GenerateBuildConfig
יצירת התצוגה המקדימה לא הצליחה לזהות מחלקות מהתלות הטרנזיטיבית
‫AGP 8.3 מפסיק את zipApksFor Task
פריטי מידע של AndroidX Desktop שנארזו בחבילת APK של Android
Lint
‫GradleModelMocker של Lint testing framework לא מאפשר להגדיר גרסת ספרייה
‫Lint K2 UAST: UCallableReferenceExpression מדווח על qualifierType שגוי
זיהוי חיובי שגוי של Lint עם useK2Uast=true עם פונקציות בעלות עומס יתר
‫[BuildTool/Lint] מאפיין constructor של ChecksSdkIntAtLeast
Lint Integration
‫Lint לא הצליח להבחין בין תלות ב-KMP

פלאגין Android Gradle‏ 8.4.1

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

פלאגין Android Gradle‏ 8.4.2

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