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

‫פלאגין של Android Gradle 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 daemon (תהליך ברקע) עבור הפרויקט. הנתיב שנבחר מאוחסן בשדה java.home בקובץ .gradle/config.properties. מגדירים את השדה הזה דרך הגדרות Gradle JDK ב-Android Studio: File (קובץ) (או Android Studio ב-macOS) > Settings > Build, Execution, Deployment > Build Tools > Gradle (הגדרות > Build, Execution, Deployment > Build Tools > Gradle).

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

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

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

בעיות שתוקנו

Android Gradle plugin 8.2.2

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

Android Gradle plugin 8.2.1

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

פלאגין של Android Gradle 8.2.0

בעיות שתוקנו
Android Gradle Plugin
סוגי מקור בהתאמה אישית צריכים ליצור ערכות מקורות בכמה טעמים
בדיקת גרסת ה-SDK לא מטפלת במשתמשים בתוספי SDK
צריך לעדכן את ה-API של DependenciesInfoBuilder ואת המסמך
‫DexingNoClasspathTransform‏ (minSdk >= 24) עם יעד Java 11 נכשל בגלל גורמים מורכבים חסרים
השיטה DslExtension.Builder.extendProjectWith() לא פועלת כמו שמתואר ב-Groovy
הוספת VariantSelector.withFlavor API שלא משתמש ב-kotlin.Pair
‫AndroidLintAnalysisTask (:lintAnalyzeExternalRelease) has a cache miss because `proguard.txt` has changed
קובץ המניפסט שעבר מיזוג של האפליקציה מכיל את המאפיינים extractNativeLibs ו-useEmbeddedDex מיחסי תלות
‫AIDL נכשל עם build-tools 33.0.0
‫AGP: חשיפת הנתיב לכלי AIDL ולקובץ AIDL של המסגרת כ-API ציבורי
בקשה: לאפשר ל-IDE להציע תיקון לבעיה 'PermittedSubclasses requires ASM9'
טירגוט של קוד בייט 17 במהלך קומפילציה של AGP
הסרה של VariantManager.getModifiedName
ההגדרה AndroidTest.packaging.jniLibs.keepDebugSymbols לא משפיעה על האריזה של androidTest
משימות של בדיקת אינסטרומנטציה של GMD נתקעות, ואחרי ניסיון חוזר הן נכשלות
‫generateLocaleConfig ב-AGP 8.1.0 משתמש בסדר לא דטרמיניסטי, מה שגורם לבעיות ב-builds שניתן לשחזר
‫ProcessApplicationManifest.navigationJsons מכיל קבצים עם נתיבים מוחלטים
אסור לגשת אל GradleBuildProject.Builder דרך AnalyticsConfiguratorService אחרי שיוצרים את AnalyticsService
ההגדרה AndroidTest.packaging.jniLibs.keepDebugSymbols לא משפיעה על האריזה של androidTest
קומפילציה מותרת לערכי צבע לא חוקיים
הערך של ReplaceWith לא נכון ב-VariantBuilder
‫Gradle 8.1 גורם לבעיות במטמון ההגדרות בגלל ‎ .gradle/.android/analytics.settings
הודעות הוצאה משימוש לא משתמשות ב-`ReplaceWith`
חשיפת דרך לקבלת גרסת ה-NDK שמוגדרת כברירת מחדל
כדי להריץ את הפלאגין של Android Gradle, צריך Java 17.
אי-תאימות בין ASM Transform לבין toAppend()
תיקון שגיאות LintErrors כשמריצים lint עם K2 UAST דרך Gradle בפרויקט KMP
תמיכה ב-missingDimensionStrategy ברמת Variant, ואולי ב-matchingFallback של סוג build/גרסה
המאפיין `android.injected.studio.version` הוסר ב-Android Studio Giraffe
נוספה האפשרות להשבית את AndroidXDependencyCheck
‫generateLocaleConfig ב-AGP 8.1.0 משתמש בסדר לא דטרמיניסטי, מה שגורם לבעיות ב-builds שניתן לשחזר
פרסום דרישות הגרסה של R8 / D8 במטא-נתונים של AAR (לדוגמה, עבור coreLibraryDesugaring ו-API חדש out-of-lining)
אזהרת סנכרון: GradleBuildProject.Builder should not be accessed through AnalyticsConfiguratorService after AnalyticsService is created
עדכון לגרסת RC או לאבן דרך של Gradle 8.2
אין גישה אל 'java.lang.Comparable'
‫androidResources לא זמין במודול ספריית Android
הביצוע נכשל עבור המשימה ':app:mergeReleaseClasses' אחרי העדכון של AGP מגרסה 8.0.2 לגרסה 8.1.0
‫Gradle 8.1 גורם לבעיות במטמון ההגדרות בגלל ‎ .gradle/.android/analytics.settings
‫[AGP 8.1.0] הפקודה ‎./gradlew test נכשלת עם השגיאה 'לא ניתן למצוא פלט של מניפסט' אם גם splits.abi.isEnable וגם testOptions.unitTests.isIncludeAndroidResources מוגדרים כ-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)
הפעלת הקלטה מקורית וכיתות חתומות כשמבצעים dexing ל-min-api 34 ומעלה
Lint
בדיקת lint שנוצרה לא מטפלת ב-AppComponentFactory בצורה טובה
גרסאות אלפא של Lint 8.2.0 עדיין לא תומכות בייבוא פונקציות ברמה העליונה ב-Kotlin
הוספת אפשרות לא לכלול מספרי שורות ועמודות ב-lint baseline
הוספת אפשרות לא לכלול מספרי שורות ועמודות ב-lint baseline
בבדיקות Lint אין תמיכה בתכונות של שפת Java 17
ב-Bumblebee 2021.1.1 Patch 1 מצוין שגרסה ישנה (20030203.000550) של commons-io חדשה יותר מ-2.11.0.
גרסאות אלפא של Lint 8.2.0 עדיין לא תומכות בייבוא פונקציות ברמה העליונה ב-Kotlin
ב-Bumblebee 2021.1.1 Patch 1 מוצגת גרסה ישנה (20030203.000550) של commons-io כחדשה יותר מ-2.11.0.
‫Android Studio מסמן גרסה מסוימת כלא עדכנית באופן שגוי.
‫Lint מתעלם מבעיית UseValueOf כשמשתמשים ב-K2 UAST
בעיות לא צפויות מפרויקט אחר שסומנו על ידי Android Lint
‫Android Lint נכשל בספריית KMP עם השגיאה `property 'variantInputs.name' doesn't have a configured value.`
שילוב Lint
שגיאת Lint‏ DuplicatePlatformClasses מתלות testImplementation
Shrinker (R8)
‫java.lang.VerifyError: המאמת דחה את המחלקה
התהליך Build נתקע בשלב ‎ :minifyReleaseWithR8 כשמשתמשים בספריית Apache POI
‫Kotlin 1.9 גורם להרס של Kotlin lambdas על ידי R8 אם nullchecks מוסרים