פלאגין של Android Gradle 8.0.0 הוא גרסה מרכזית שכוללת מגוון של תכונות ושיפורים חדשים.
תאימות
| גרסת המינימום | גרסת ברירת המחדל | הערות | |
|---|---|---|---|
| Gradle | 8.0 | 8.0 | יש מידע נוסף במאמר בנושא עדכון Gradle. |
| SDK Build Tools | 30.0.3 | 30.0.3 | צריך להתקין או להגדיר את SDK Build Tools. |
| NDK | לא רלוונטי | 25.1.8937393 | צריך להתקין או להגדיר גרסה אחרת של NDK. |
| JDK | 17 | 17 | מידע נוסף זמין במאמר הגדרת גרסת ה-JDK. |
גרסאות תיקון
בהמשך מופיעה רשימה של גרסאות התיקונים של פלאגין של Android Gradle 8.0.
פלאגין של Android Gradle גרסה 8.0.2 (מאי 2023)
רשימת הבאגים שתוקנו ב-AGP 8.0.2 מופיעה בקטע הבעיות שנסגרו ב-Android Studio 2022.2.1.
פלאגין של Android Gradle גרסה 8.0.1 (מאי 2023)
העדכון הקטן הזה כולל את תיקוני הבאגים הבאים:
| בעיות שתוקנו | |
|---|---|
|
שגיאה: "No VersionRequirement with the given id in the table" אחרי שדרוג AGP מגרסה 7.2.2 לגרסה 7.4.0
|
|
|
R8 NullPointerException ב-markTypeAsLive AGP 7.4.1
|
|
|
[R8 4.0.53] כשל באימות מחלקה קשיחה ב-Android 11
|
|
שינוי תוכנה שעלול לגרום לכשל: נדרש מרחב שמות בסקריפט ה-build ברמת המודול
צריך להגדיר את מרחב השמות בקובץ build.gradle.kts ברמת המודול, ולא בקובץ המניפסט. אתם יכולים להתחיל להשתמש במאפיין DSL של namespace החל מ-AGP 7.3. מידע נוסף זמין במאמר הגדרת מרחב שמות.
כשעוברים למרחב השמות DSL, חשוב לשים לב לבעיות הבאות:
- בגרסאות קודמות של AGP, המערכת מסיקה את מרחב השמות לבדיקה ממרחב השמות הראשי או ממזהה האפליקציה, באופן שגוי במקרים מסוימים. כלי השדרוג של AGP חוסם את השדרוג אם הוא מזהה שמרחב השמות הראשי ומרחב השמות לבדיקה של הפרויקט זהים. אם השדרוג נחסם, צריך לשנות את
testNamespaceבאופן ידני ולשנות את קוד המקור בהתאם. - אחרי שמשנים את מרחב השמות של הבדיקה, יכול להיות שהקוד יעבור קומפילציה אבל בדיקות האינסטרומנטציה ייכשלו בזמן הריצה. זה יכול לקרות אם קוד המקור של בדיקת האינסטרומנטציה מפנה למשאב שמוגדר גם במקורות של
androidTestוגם במקורות של האפליקציה.
מידע נוסף זמין בתגובה מספר 19 בבעיה מספר 191813691.
שינויים בתוכנה שעלולים לגרום לכשלים: ערכי ברירת המחדל של אפשרויות ה-build
החל מגרסה 8.0 של AGP, ערכי ברירת המחדל של הדגלים האלה השתנו כדי לשפר את ביצועי ה-build. כדי לקבל עזרה בהתאמת הקוד לתמיכה בחלק מהשינויים האלה, אפשר להשתמש ב-AGP Upgrade Assistant (Tools > AGP Upgrade Assistant). הכלי Upgrade Assistant ידריך אתכם איך לעדכן את הקוד כדי להתאים אותו להתנהגות החדשה, או איך להגדיר דגלים כדי לשמור על ההתנהגות הקודמת.
| דגל | ערך ברירת מחדל חדש | ערך ברירת המחדל הקודם | הערות |
|---|---|---|---|
android.defaults.buildfeatures.buildconfig |
false |
true |
כברירת מחדל, AGP 8.0 לא יוצר BuildConfig. צריך לציין את האפשרות הזו באמצעות ה-DSL בפרויקטים שבהם היא נדרשת. |
android.defaults.buildfeatures.aidl |
false |
true |
ב-AGP 8.0, התמיכה ב-AIDL לא מופעלת כברירת מחדל. צריך לציין את האפשרות הזו באמצעות ה-DSL בפרויקטים שבהם היא נדרשת. אנחנו מתכננים להסיר את הדגל הזה ב-AGP 9.0. |
android.defaults.buildfeatures.renderscript |
false |
true |
AGP 8.0 לא מפעיל תמיכה ב-RenderScript כברירת מחדל. צריך לציין את האפשרות הזו באמצעות ה-DSL בפרויקטים שבהם אתם צריכים אותה. אנחנו מתכננים להסיר את הדגל הזה ב-AGP 9.0. |
android.nonFinalResIds |
true |
false |
כברירת מחדל, AGP 8.0 יוצר מחלקות R עם שדות לא סופיים |
android.nonTransitiveRClass |
true |
false |
AGP 8.0 יוצר מחלקות R למשאבים שמוגדרים במודול הנוכחי בלבד. |
android.enableR8.fullMode |
true |
false |
AGP 8.0 מפעיל את המצב המלא של R8 כברירת מחדל. פרטים נוספים זמינים במאמר מצב מלא של R8. |
שינויים בתוכנה שעלולים לגרום לכשלים: ערכים של אפשרויות build שנאכפים
החל מגרסה 8.0 של AGP, אי אפשר יותר לשנות את הערכים של הדגלים האלה. אם תציינו אותם בקובץ gradle.properties, המערכת תתעלם מהערך ו-AGP יציג אזהרות.
| דגל | הערך שנאכף | הערות |
|---|---|---|
android.dependencyResolutionAtConfigurationTime.warn |
true |
AGP 8.0 מציג אזהרה אם הוא מזהה רזולוציית הגדרה במהלך שלב ההגדרה, כי היא משפיעה לרעה על זמני ההגדרה של Gradle. |
android.r8.failOnMissingClasses |
true |
גרסה 8.0 של AGP נכשלת ב-builds שמשתמשים ב-R8 אם חסרות מחלקות, כדי להבטיח אופטימיזציה טובה יותר של DEX. כדי לפתור את הבעיה, צריך להוסיף את הספריות החסרות או את כללי ה--dontwarn keep. פרטים נוספים זמינים במאמר אזהרות לגבי מחלקות חסרות בכלי לכיווץ R8. |
android.testConfig.useRelativePath |
true |
כשמפעילים את התמיכה בשימוש במשאבים, בנכסים ובמניפסטים של Android בבדיקות יחידה, AGP 8.0 יוצר קובץ test_config.properties שמכיל רק נתיבים יחסיים. כך אפשר להבטיח שבדיקות היחידה של Android תמיד יוכלו להשתמש במטמון ה-build של Gradle. |
android.useNewJarCreator |
true |
כדי לשפר את ביצועי ה-build, AGP משתמש בספריית Zipflinger כשיוצרים קובצי JAR. |
android.bundletool.includeRepositoriesInDependencyReport |
true |
כשמוסיפים מידע על יחסי תלות של SDK בקובצי AAB ו-APK, AGP 8.0 מוסיף למידע הזה גם רשימה של מאגרי פרויקטים. מידע נוסף זמין במאמר מידע על יחסי תלות ב-Play Console. |
android.enableArtProfiles |
true |
פרופילים של Baseline נוצרים עכשיו תמיד. פרטים נוספים זמינים במאמר פרופילים בסיסיים. |
android.enableNewResourceShrinker |
true |
שימוש בהטמעה החדשה של כיווץ המשאבים כברירת מחדל. הכלי החדש לכיווץ משאבים כולל תמיכה בתכונות דינמיות. |
android.enableSourceSetPathsMap |
true |
משמש לחישוב מיפויים של נתיבי משאבים יחסיים, כך שה-builds של Gradle מעודכנים לעיתים קרובות יותר. |
android.cacheCompileLibResources |
true |
עכשיו אפשר לשמור במטמון משאבי ספרייה שעברו הידור כברירת מחדל, כי Gradle עוקב אחרי קובצי משאבים ביחס למיקום הפרויקט. צריך להפעיל את android.enableSourceSetPathsMap. |
android.disableAutomaticComponentCreation |
true |
AGP 8.0 לא יוצר SoftwareComponent כברירת מחדל. במקום זאת, AGP יוצר SoftwareComponents רק לווריאציות שמוגדרות לפרסום באמצעות ה-DSL לפרסום. |
דגל יציב חדש לפרופיל הביצוע
AGP כולל את הדגל החדש android.settings.executionProfile. משתמשים בדגל הזה כדי לשנות את פרופיל הביצוע שמוגדר כברירת מחדל ב-SettingsExtension. מידע נוסף זמין במאמרי העזרה בנושא פלאגין ההגדרות.
כדי לראות תצוגה מקדימה של דגלים ניסיוניים, עיינו בנתוני הגרסה של גרסת בטא.
אין תמיכה בהקצאת מאפיינים מסוג lazy ב-Kotlin
אם אתם משתמשים ב-Kotlin DSL של Gradle לסקריפטים של ה-build, שימו לב ש-Android Studio ו-AGP 8.0 לא תומכים בהקצאת המאפיינים הניסיונית באמצעות האופרטור =. מידע נוסף על התכונה הזו זמין בנתוני הגרסה ובמסמכי התיעוד.
קטגוריות של משימות ב-Build Analyzer
החל מגרסת Android Studio Flamingo, ל-Build Analyzer יש תצוגת ברירת מחדל חדשה למשימות שמשפיעות על משך ה-build. אם הפרויקט שלכם משתמש ב-AGP בגרסה 8.0 ומעלה, במקום להציג משימות בנפרד, Build Analyzer מקבץ אותן לפי קטגוריה. לדוגמה, משימות שספציפיות למשאבי Android, ל-Kotlin או ל-Dexing מקובצות יחד ואז ממוינות לפי משך ה-build. כך תוכלו לזהות איזו קטגוריה משפיעה הכי הרבה על זמן ה-build. כשמרחיבים כל קטגוריה, מוצגת רשימה של המשימות שקשורות אליה. כדי להציג משימות בנפרד, בלי קיבוץ, משתמשים בתפריט הנפתח קיבוץ לפי.

פלאגין חדש להגדרות
ב-AGP 8.0.0-alpha09 יש פלאגין הגדרות חדש. הפלאגין של ההגדרות מאפשר לרכז את ההגדרות הגלובליות (הגדרות שחלות על כל המודולים) במקום אחד, כדי שלא תצטרכו להעתיק ולהדביק את ההגדרות בכמה מודולים. בנוסף, אתם יכולים להשתמש בפלאגין ההגדרות כדי ליצור פרופילי הפעלה של כלים, או הוראות שונות להפעלת כלי, ולעבור ביניהם.
כדי להשתמש בפלאגין ההגדרות, צריך להחיל את הפלאגין בקובץ settings.gradle:
apply plugin 'com.android.settings'
ריכוז ההגדרות הגלובליות
כדי להגדיר הגדרות גלובליות, משתמשים בבלוק החדש android בקובץ settings.gradle. הנה דוגמה:
android {
compileSdk 31
minSdk 28
...
}
פרופילים של הרצת כלים
פלאגין ההגדרות מאפשר גם ליצור פרופילי הפעלה לכלים מסוימים. פרופיל ההפעלה קובע איך הכלי יפעל, ואפשר לבחור פרופילי הפעלה שונים בהתאם לסביבה. בפרופיל ההפעלה, אתם יכולים להגדיר ארגומנטים של JVM לכלי ולהגדיר אותו כך שיפעל בתהליך נפרד. יש תמיכה רק בכלי R8.
יוצרים פרופילי הפעלה ומגדירים את פרופיל ההפעלה שמוגדר כברירת מחדל בקובץ settings.gradle, כמו בדוגמה הבאה:
android {
execution {
profiles {
high {
r8 {
jvmOptions += ["-Xms2048m", "-Xmx8192m", "-XX:+HeapDumpOnOutOfMemoryError"]
runInSeparateProcess true
}
}
low {
r8 {
jvmOptions += ["-Xms256m", "-Xmx2048m", "-XX:+HeapDumpOnOutOfMemoryError"]
runInSeparateProcess true
}
}
ci {
r8.runInSeparateProcess false
}
}
defaultProfile "low"
}
}
כדי לשנות את פרופיל ברירת המחדל, בוחרים פרופיל אחר באמצעות המאפיין android.experimental.settings.executionProfile בקובץ gradle.properties:
android.experimental.settings.executionProfile=high
אפשר גם להגדיר את המאפיין הזה באמצעות שורת הפקודה, שמאפשרת להגדיר תהליכי עבודה שונים. לדוגמה, אם יש לכם תהליך עבודה של אינטגרציה רציפה (CI), אתם יכולים להשתמש בשורת הפקודה כדי לשנות את פרופיל ההפעלה בלי לשנות את הקובץ settings.gradle:
./gradlew assembleRelease \
-Pandroid.experimental.settings.executionProfile=ci
כדי להפעיל את AGP 8.0 נדרש JDK 17
כשמשתמשים בפלאגין של Android Gradle בגרסה 8.0 כדי ליצור את האפליקציה, צריך עכשיו את JDK 17 כדי להריץ את Gradle. Android Studio Flamingo כולל את JDK 17 ומגדיר את Gradle להשתמש בו כברירת מחדל, כך שרוב המשתמשים ב-Android Studio לא צריכים לבצע שינויים בהגדרות של הפרויקטים שלהם.
אם אתם צריכים להגדיר ידנית את גרסת ה-JDK שבה AGP משתמש ב-Android Studio, אתם צריכים להשתמש ב-JDK 17 ואילך.
כשמשתמשים ב-AGP בלי קשר ל-Android Studio, משדרגים את גרסת ה-JDK על ידי הגדרת משתנה הסביבה JAVA_HOME או האפשרות של שורת הפקודה -Dorg.gradle.java.home לספריית ההתקנה של JDK 17.
בעיות שתוקנו
פלאגין של Android Gradle 8.0.2
| בעיות שתוקנו | |||||
|---|---|---|---|---|---|
| כלי לכיווץ (R8) |
|
||||
פלאגין של Android Gradle 8.0.1
| בעיות שתוקנו | ||||
|---|---|---|---|---|
| כלי לכיווץ (R8) |
|
|||
פלאגין של Android Gradle 8.0.0
| בעיות שתוקנו | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| פלאגין של Android Gradle |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Dexer (D8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| שילוב Lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| כלי לכיווץ (R8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||