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

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

תאימות

רמת ה-API המקסימלית שתומכת בפלאגין Android Gradle 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 תיקון 2 (2023.3.1.20).

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

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

  • כדי לבטל את הגישה לשילוב OAuth, עוברים אל Applications > Authorized OAuth Apps ומבטלים את הגישה לאסימון JetBrains IDE Integration.
  • כדי לבטל את הגישה של PAT, עוברים אל אסימוני גישה אישיים ומוחקים את האסימון שהונפק לפלאגין של 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 ללא דחיסה, כלומר code shrinker לא יפעל בהם.

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

בעיות שתוקנו

Android Gradle plugin 8.4.0

בעיות שתוקנו
Android Gradle Plugin
שיפור הודעת השגיאה לגבי הסיבה לכך שאי אפשר להשתמש באפשרות `--release` ל-JavaCompile
השבתת שמירת מטמון של MergeSourceSetFolders באמצעות @DoNotCacheByDefault
לא ניתן להגדיר את גרסת JaCoCo ב-AGP 8.2.0
ב-DynamicFeatureBuildType חסר isDebuggable
כיתות ספרייה מקוצרות לא מתפרסמות בצורה נכונה לשימוש בין פרויקטים
לספק ממשק Variant#sources API שמחריג קבצים שנוצרו
מודלים של AGP לא מכילים יחסי תלות של פרויקטים בפלטפורמת Java
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: Index 0 out of bounds for length 0
בעיה בטיפול בקלט המצטבר של MergeJavaResourcesTask
AGP 8.3.0-alpha02 תלוי בספריות עם נקודות חולשה ידועות באבטחה
תבנית הפעילות שנבחרה דורשת פרויקט עם יחסי תלות של androidx.*
AGP Upgrade Assistent מסיר בטעות את consumerProguardFiles מהמודול
הכלי לשדרוג AGP נטען ללא הגבלה
SourceDirectories#static לא צריך להיות תלוי במשימה GenerateBuildConfig
Compose preview unable to resolve classes from transitive dependency
AGP 8.3 משבשת את המשימה zipApksFor
ארטיפקטים של AndroidX Desktop שארוזים ב-APK של Android
Lint
ה-GradleModelMocker של מסגרת בדיקת Lint לא מאפשר להגדיר את גרסת הספרייה
Lint K2 UAST: UCallableReferenceExpression reports wrong qualifierType
זיהוי חיובי שגוי ב-Lint עם useK2Uast=true עם פונקציות בעלות עומס יתר
[BuildTool/Lint] מאפיין ה-constructor של ChecksSdkIntAtLeast
שילוב איתור שגיאות בקוד
ל-Lint אין אפשרות להסיר את הספק הלא ברור של יחסי התלות ב-KMP

Android Gradle plugin 8.4.1

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

Android Gradle plugin 8.4.2

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