פלאגין של Android Gradle‏ ‎9.2.0 (אפריל 2026)

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

תאימות

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

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

דוחות מאוחדים של כיסוי ובדיקות

ב-AGP 9.2.0-alpha07 נוספו משימות ליצירת לוחות בקרה ב-HTML שמרכזים את תוצאות הבדיקות ואת רמת הכיסוי של הקוד מסוגים שונים של בדיקות (יחידות ואינסטרומנטציה), מודולים ווריאנטים של build, ומספקים סקירה מקיפה בלוח בקרה אחד. למידע נוסף, אפשר לעיין במאמרים בנושא יצירת דוחות מאוחדים של רמת הכיסוי של הקוד והצגת דוחות מאוחדים של בדיקות.

שינויים בגרסה R8

השינויים הבאים ב-R8 כלולים ב-AGP 9.2.0.

סמנטיקה מחמירה יותר של -keepattributes לשמירה על הערות בלתי נראות בזמן ריצה

אי אפשר לקרוא הערות בלתי נראות בזמן ריצה בזמן ריצה. לכן, D8 מסיר ללא תנאי הערות בלתי נראות בזמן ריצה, ואין אפשרות לשנות את זה.

כדי שתהיה תאימות ל-ProGuard, ‏ R8 תומך בפלט של הערות לא גלויות בזמן הריצה. אבל כשמבצעים קומפילציה ל-DEX, בדרך כלל לא צריך לשמור הערות שאינן גלויות בזמן הריצה. עם זאת, נהוג לכלול את הכלל הנוח -keepattributes *Annotation* (ישירות או בעקיפין מכללי שמירה של צרכנים) כדי ש-R8 ישמור הערות שניתן לראות בזמן הריצה. לצערנו, הפעולה הזו גם גורמת לכך שההערות בזמן הריצה לא יהיו גלויות.

כדי לצמצם את הבעיה הזו ולשפר את ההתאמה להתנהגות של D8, תבניות -keepattributes עם תווים כלליים לחיפוש לא יתאימו יותר ל-RuntimeInvisibleAnnotations, ל-RuntimeInvisibleParameterAnnotations ול-RuntimeInvisibleTypeAnnotations. כתוצאה מכך, הערות בלתי נראות בזמן ריצה יישמרו רק אם שם המאפיין מצוין במפורש ללא תווים כלליים לחיפוש.

אף אחד מהכללים הבאים לא ישמור עכשיו הערות בלתי נראות בזמן ריצה:

-keepattributes *
-keepattributes *Annotation*
-keepattributes *Invisible*

כדי לשמור על הערות בלתי נראות בזמן הריצה, משתמשים בכלל הבא:

-keepattributes RuntimeInvisibleAnnotations,
                RuntimeInvisibleParameterAnnotations,
                RuntimeInvisibleTypeAnnotations

תמיכה בשמות מוכחשים בכללי חברים

הרחבנו את שפת ההגדרה כך שתוכלו להתאים עכשיו לתבניות של שמות חברים שמופיע בהן סימן שלילה.

לדוגמה, כדי להתאים את כל השיטות שלא מסתיימות ב-'ForTesting', משתמשים בכלל הבא:

-keepclassmembers class com.example.MyClass {
  *** !*ForTesting(...);
}

אפשר גם לשלול דפוסי שמות של חברים בתנאי המוקדם של כללי -if. אם דפוס שם של חבר שנשלל מכיל תווים כלליים לחיפוש, אי אפשר להפנות לאחור לתווים הכלליים האלה בכלל -if שנובע מהם.

בעיות שתוקנו

פלאגין של Android Gradle 9.2.1

בעיות שתוקנו
Android Gradle Plugin
‪java.lang.ClassNotFoundException: Didn't find class "com.android.tools.r8.RecordTag" after upgrading gradle to 9.2.0

פלאגין של Android Gradle 9.2.0

בעיות שתוקנו
Android Gradle Plugin
הצגת אזהרה למשתמשים אם יש להם commonTest אבל הם שכחו להשתמש ב-withHostTestBuilder
‫[fused lib - public] OkHttp includes sources
אי אפשר להריץ androidDeviceTest עם placeholders של מניפסט בספרייה (AGP 9.0.0 עם התוסף com.android.kotlin.multiplatform.library)
‫AGP צריך להציג אזהרה אם למשתמש יש src/androidDeviceTest/java עם java מושבת
‫AGP 9.0 No androidComponents.onVariant equivalent for applicationVariants.all.mergeAssetsProvider
קבצים מסוג ‎`*.xml.flat` ‎ מכילים נתיבי קבצים מוחלטים
R8D8ThreadPoolBuildService not registered
כשל ב-JdkImageTransform עם JDK 26
קידוד אוטומטי של minAgpVersion במטא-נתונים של AAR ב-AGP 10.0
שינוי השם של קובץ APK באמצעות AGP DSL חדש
שגיאה בגישה (אבל לא בהערכה) של bootClasspath IllegalStateException: targetCompatibility is not yet finalized
ה-sourceset של keepRules לא פועל בספריות
הטמעת הצהרת תאימות ל-CC ב-AGP
עדכון התלות של פלאגין Kotlin Gradle לגרסה 2.3.10
הגדרה של compileSdk גבוה יותר לבדיקות מאשר ל-main
Lint
הפעלת Lint לשגיאת הקלדה בהודעה
חלון הקשר נחתך בדוחות Lint SARIF בגלל מצביע אופסט תקוע ב-`SarifReporter.kt`
חסרה תכונה קריטית בלקוח Lint Gradle, ולכן הוא לא אמין.
שגיאת Lint כשכיווץ מקורות המידע מושבת
‫AGP 9 Lint מדווח על WrongConstant כשמשתמשים בקבועי IntDef מקוננים
שגיאת Lint כשכיווץ מקורות המידע מושבת
שילוב Lint
‫Android Lint נכשל בבדיקות Lint בהתאמה אישית שעברו קומפילציה ל-Java 21 bytecode
משימות Lint Gradle מתעלמות מהדגל ‎--quiet
Shrinker (R8)
נראה שהטירגוט של Java 11 גורם לבעיות ב-d8