פלאגין Android Gradle 8.2.0 (נובמבר 2023)

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

תאימות

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

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

מאקרו חדש לציון נתיב ה-JDK

#GRADLE_LOCAL_JAVA_HOME הוא מאקרו חדש שבעזרתו אפשר לציין את הנתיב של JDK. כך קל יותר לציין את נתיב הבית של Java שמשמש להרצה של הדימון (תהליך הרקע) של Gradle בפרויקט. בחירת הנתיב מאוחסנת בשדה java.home בקובץ .gradle/config.properties. מגדירים את השדה הזה דרך הגדרות Gradle JDK ב-Android Studio: File (או Android Studio ב-macOS) > Settings > Build, Execution, Deployment > Build Tools > Gradle.

בפרויקטים חדשים ייעשה שימוש ב-#GRADLE_LOCAL_JAVA_HOME כברירת מחדל. פרויקטים קיימים יועברו באופן אוטומטי למאקרו החדש אחרי סנכרון מוצלח, אלא אם אתם כבר משתמשים במאקרו כמו #JAVA_HOME.

אלה היתרונות העיקריים של המאקרו החדש:

  • אפשר לשנות באופן ידני את הנתיב של JDK כדי להפעיל את הסנכרון בלי לפתוח את הפרויקט קודם.
  • פחות שגיאות שקשורות לגרסאות Gradle ולגרסאות JDK של הפרויקט שלא תואמות, כי יש מקור אחד לאמת לגבי הבחירה של Gradle JDK.

בעיות שתוקנו

Android Gradle plugin 8.2.0

בעיות שתוקנו
Android Gradle Plugin
סוגי מקורות בהתאמה אישית צריכים ליצור קבוצות מקורות עם כמה טעמים
בדיקת גרסת ה-SDK לא מטפלת במשתמשים עם תוספים של SDK
DependenciesInfoBuilder needs API update + doc
DexingNoClasspathTransform‏ (minSdk >= 24) עם יעד Java 11 נכשל בגלל רכיבי עץ חסרים
DslExtension.Builder.extendProjectWith() לא פועלת כפי שמתואר ב-Groovy
הוספת VariantSelector.withFlavor API שלא משתמש ב-kotlin.Pair
ב-AndroidLintAnalysisTask‏ (:lintAnalyzeExternalRelease) חל החמצה של מטמון כי קובץ proguard.txt השתנה
המניפסט הממוזג של האפליקציה מכיל את המאפיינים extractNativeLibs ו-useEmbeddedDex מיחסי התלות
AIDL נכשל עם build-tools 33.0.0
AGP: חשיפת הנתיב לכלי AIDL ולקובץ AIDL של המסגרת כ-API ציבורי
בקשה: לאפשר לסביבת הפיתוח האינטגרטית להציע תיקון לבעיה 'נדרשת גרסה ASM9 ל-PermittedSubclasses'
יעד קוד בינארי 17 בזמן הידור AGP
הסרת VariantManager.getModifiedName
AndroidTest.packaging.jniLibs.keepDebugSymbols לא משפיע על האריזה של androidTest
משימות הבדיקה של GMD instrumentation נתקעות, ובניסיון חוזר הן מתחילות להיכשל
הפונקציה generateLocaleConfig ב-agp 8.1.0 משתמשת בסדר לא דטרמיניסטית, וכתוצאה מכך ה-builds לא ניתנים לשחזור
ב-ProcessApplicationManifest.navigationJsons יש קבצים עם נתיבים מוחלטים
אסור לגשת ל-GradleBuildProject.Builder דרך AnalyticsConfiguratorService אחרי שיוצרים את AnalyticsService
AndroidTest.packaging.jniLibs.keepDebugSymbols לא משפיע על האריזה של androidTest
איסוף (compilation) מותר לערכים לא חוקיים של צבע
הערך של ReplaceWith שגוי ב-VariantBuilder
Gradle 8.1 מפר את האחסון במטמון של ההגדרות בגלל ‎ .gradle/.android/analytics.settings
הודעות על הוצאה משימוש לא משתמשות ב-ReplaceWith
חשיפת דרך לקבל את גרסת ברירת המחדל של NDK
כדי להריץ את הפלאגין של Android Gradle, נדרשת גרסה 17 של Java.
חוסר תאימות בין ASM Transform לבין toAppend()‎
תיקון שגיאות Lint בזמן הרצת איתור שגיאות בקוד (lint) באמצעות K2 UAST דרך Gradle בפרויקט KMP
תמיכה ב-missingDimensionStrategy ברמת הווריאנט, ואולי גם ב-Fallback בהתאמה לסוג/לסגנון ה-build
השדה android.injected.studio.version הוסר ב-Android Studio Giraffe
הוספה של היכולת להשבית את AndroidXDependencyCheck
הפונקציה generateLocaleConfig ב-agp 8.1.0 משתמשת בסדר לא דטרמיניסטית, וכתוצאה מכך ה-builds לא ניתנים לשחזור
הצגת דרישות לגרסאות R8 או D8 במטא-נתונים של AAR (למשל, ל-coreLibraryDesugaring ול-API חדש מחוץ לקו)
אזהרת סנכרון: "לא צריך לגשת ל-GradleBuildProject.Builder דרך AnalyticsConfiguratorService אחרי שיוצרים את AnalyticsService"
עדכון לאבן דרך או לגרסת RC של Gradle 8.2
אין גישה ל-'java.lang.Comparable'
androidResources לא זמין במודול הספרייה של Android
Execution failed for task ':app:mergeReleaseClasses' after Updating AGP from 8.0.2 to 8.1.0
Gradle 8.1 מפר את האחסון במטמון של ההגדרות בגלל ‎ .gradle/.android/analytics.settings
[AGP 8.1.0] ‎./gradlew test fails with "Unable to find manifest output" if both splits.abi.isEnable and testOptions.unitTests.isIncludeAndroidResources are true
Android Studio Giraffe לא מתייחס ל-versionCodeOverride עם AGP 8.1
AGP 8.1.0 מסיר את האפליקציה אחרי הרצת בדיקות עם מכשירי מדידה – 7.4.2 לא מסיר
טרנספורמציה של קובץ APK מובילה לשגיאה ב-ListingFileRedirectTask
HEDGEHOG REGRESSION: Run button is delayed by a few seconds (Creating spec)
Dexer‏ (D8)
הפעלת רשומות מקוריות ורשימות חתולות במהלך הוספה לאינדקס עבור גרסאות API מגרסה 34 ואילך
Lint
בדיקת איתור שגיאות בקוד (lint) בזמן יצירה לא מטפלת היטב ב-AppComponentFactory
גרסאות האלפא של Lint 8.2.0 עדיין לא תומכות בייבוא פונקציות ברמה העליונה ב-Kotlin
הוספת אפשרות לא לכלול את מספרי השורות והעמודות בבסיס לזיהוי שגיאות בקוד
הוספת אפשרות לא לכלול את מספרי השורות והעמודות בבסיס לזיהוי שגיאות בקוד
בדיקות Lint לא תומכות בתכונות השפה של Java 17
ב-Bumblebee 2021.1.1 תיקון 1 מצוין שגרסה ישנה (20030203.000550) של commons-io חדשה יותר מ-2.11.0.
גרסאות האלפא של Lint 8.2.0 עדיין לא תומכות בייבוא פונקציות ברמה העליונה ב-Kotlin
ב-Bumblebee 2021.1.1 תיקון 1 מצוין שגרסה ישנה (20030203.000550) של commons-io חדשה יותר מ-2.11.0.
גרסת Android Studio מסוימת מסומנת בטעות כגרסה לא עדכנית.
Lint מתעלם מבעיה ב-UseValueOf כשמשתמשים ב-K2 UAST
בעיות לא צפויות מפרויקט אחר שסומנו על ידי Android Lint
Android Lint נכשל בספריית KMP עם השגיאה 'לנכס 'variantInputs.name' אין ערך מוגדר'.
שילוב איתור שגיאות בקוד
שגיאת איתור שגיאות בקוד (lint) מסוג DuplicatePlatformClasses כתוצאה מהתלות ב-testImplementation
Shrinker‏ (R8)
java.lang.VerifyError: Verifier rejected class
ה-build נתקע ב-:minifyReleaseWithR8 כשמשתמשים בספריית Apache POI
בגרסה 1.9 של Kotlin, פונקציות הלמה של Kotlin נהרסות על ידי R8 אם בדיקות הערך null מוסרות

Android Gradle plugin 8.2.1

בעיות שתוקנו
Android Gradle Plugin
לא להריץ את המשימה dexing על הכיתות של פרויקטים משניים שכבר עברו תהליך dex באמצעות טרנספורמציות של ארטיפקטים
Android Gradle Plugin נכשל עם JavaVersion.VERSION_11 ו-OpenJDK 21 ea
Dexer‏ (D8)
הסרת סוכר מרשומים ל-Android U
Shrinker‏ (R8)
R8 יוצר קובץ dex שבור שמתקבלת ממנו חריגה מסוג class cast בזמן הריצה
R8 גורם לשינוי בממשק לממשק לא נגיש
קריסה של R8 Flurry SDK עם AGP 8.2.0
Android - R8 causes subclass of LinearLayoutManager to crash
ClassCastException ב-R8 כשאריזה מחדש מופעלת והתכונות 'כיווץ', 'ערפול קוד' ו'אופטימיזציה' מושבתות
R8 תקוע ב-BridgeAnalyzer.analyzeMethod
R8 v8.2.33, קריסה בסביבת זמן ריצה לאחר השדרוג עם הודעת השגיאה "java.lang.VerifyError: Bad type on operand stack"

Android Gradle plugin 8.2.2

בעיות שתוקנו
Android Gradle Plugin
לא ניתן להגדיר את גרסת JaCoCo ב-AGP 8.2.0
Dexer‏ (D8)
[desugared library] Desugared library version 2.1 is not compatible with previous versions of R8
האם האופטימיזציות פועלות גם עם D8 בלבד?
Shrinker‏ (R8)
[R8 8.3.21] גרסה R8 8.3.21 גדולה ב-1.57MB מגרסה R8 8.1.56
הפונקציה class.getInterfaces() מחזירה ערך ריק