Android Gradle plugin 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 Plugin 8.0.
Android Gradle Plugin 8.0.2 (מאי 2023)
רשימת הבאגים שתוקנו ב-AGP 8.0.2 מופיעה בבעיות הסגורות ב-Android Studio 2022.2.1.
Android Gradle Plugin 8.0.1 (מאי 2023)
העדכון הקטן הזה כולל את תיקוני הבאגים הבאים:
בעיות שתוקנו | |
---|---|
שגיאה: 'No VersionRequirement with the given id in the table' (אין דרישת גרסה עם המזהה שצוין בטבלה) אחרי שדרוג מ-AGP 7.2.2 ל-7.4.0
|
|
R8 NullPointerException at markTypeAsLive AGP 7.4.1
|
|
[R8 4.0.53] אימות קשיח של מחלקה נכשל ב-Android 11
|
שינוי שובר תאימות: חובה לציין מרחב שמות בסקריפט build ברמת המודול
צריך להגדיר את מרחב השמות בקובץ build.gradle.kts
ברמת המודול, ולא בקובץ המניפסט. אפשר להתחיל להשתמש בנכס namespace
DSL החל מ-AGP 7.3. מידע נוסף זמין במאמר בנושא הגדרת מרחב שמות.
כשמעבירים ל-DSL של מרחב השמות, חשוב לשים לב לבעיות הבאות:
- בגרסאות קודמות של AGP, מרחב השמות של הבדיקה נגזר ממרחב השמות הראשי או ממזהה האפליקציה, ובמקרים מסוימים זה קורה בצורה שגויה. הכלי AGP Upgrade Assistant חוסם את השדרוג אם הוא מזהה שמרחב השמות הראשי ומרחב השמות של הבדיקה בפרויקט זהים. אם השדרוג נחסם, צריך לשנות את
testNamespace
ולשנות את קוד המקור בהתאם. - אחרי שמשנים את מרחב השמות של הבדיקה, יכול להיות שהקוד יעבור קומפילציה אבל הבדיקות עם המכשיר ייכשלו בזמן הריצה. מצב כזה יכול לקרות אם קוד המקור של הבדיקה המכשירנית מפנה למשאב שמוגדר גם ב-
androidTest
וגם במקורות האפליקציה.
מידע נוסף זמין בבעיה מספר 191813691, תגובה מספר 19.
שינויים שעלולים לשבור את הקוד: ערכי ברירת מחדל של אפשרויות build
החל מ-AGP 8.0, ערכי ברירת המחדל של הדגלים האלה השתנו כדי לשפר את ביצועי הבנייה. כדי לקבל עזרה בהתאמת הקוד לתמיכה בחלק מהשינויים האלה, אפשר להשתמש בכלי AGP Upgrade Assistant (Tools > AGP 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. |
שינויים שעלולים לגרום לכשל: ערכים של אפשרויות בנייה שנאכפים
החל מ-AGP 8.0, אי אפשר יותר לשנות את הערכים של הדגלים האלה. אם מציינים אותם בקובץ gradle.properties
, המערכת מתעלמת מהערך ו-AGP מדפיס אזהרות.
סימון | ערך נאכף | הערות |
---|---|---|
android.dependencyResolutionAtConfigurationTime.warn |
true |
AGP 8.0 מציג אזהרה אם הוא מזהה פתרון הגדרה במהלך שלב ההגדרה, כי זה משפיע לרעה על זמני ההגדרה של Gradle. |
android.r8.failOnMissingClasses |
true |
אם יש מחלקות חסרות, גרסה AGP 8.0 לא מצליחה לבנות קבצים שמשתמשים ב-R8, כדי לשפר את האופטימיזציה של DEX. כדי לפתור את הבעיה הזו, צריך להוסיף את הספריות החסרות או -dontwarn כללי שמירה. פרטים נוספים זמינים במאמר בנושא אזהרות על כיתות חסרות בכלי R8 Shrinker. |
android.testConfig.useRelativePath |
true |
כשמפעילים את התמיכה בשימוש במשאבים, בנכסים ובמניפסטים של Android בבדיקות יחידה, AGP 8.0 יוצר קובץ test_config.properties שמכיל רק נתיבים יחסיים. כך אפשר לוודא שבדיקות היחידות ב-Android תמיד יוכלו להשתמש במטמון הבנייה של Gradle. |
android.useNewJarCreator |
true |
AGP משתמש בספריית Zipflinger כשיוצרים קובצי JAR כדי לשפר את ביצועי הבנייה. |
android.bundletool.includeRepositoriesInDependencyReport |
true |
כשמופעלת האפשרות להוסיף מידע על יחסי תלות של SDK בחבילות AAB ובקובצי APK, AGP 8.0 מוסיף למידע הזה גם רשימה של מאגרי פרויקטים. מידע נוסף זמין במאמר בנושא מידע על תלות ב-Play Console. |
android.enableArtProfiles |
true |
פרופילים בסיסיים נוצרים עכשיו תמיד. פרטים נוספים זמינים במאמר בנושא פרופילי בסיס. |
android.enableNewResourceShrinker |
true |
שימוש בהטמעה החדשה של כלי להסרת משאבים לא נחוצים כברירת מחדל. הכלי החדש לצמצום משאבים כולל תמיכה בתכונות דינמיות. |
android.enableSourceSetPathsMap |
true |
התוסף משמש לחישוב מיפויי נתיבי משאבים יחסיים, כך שהגרסאות של Gradle יהיו עדכניות יותר. |
android.cacheCompileLibResources |
true |
מעכשיו אפשר לשמור במטמון משאבים של ספריות שעברו קומפילציה כברירת מחדל, כי Gradle עוקב אחרי קובצי משאבים ביחס למיקום הפרויקט. צריך להפעיל את android.enableSourceSetPathsMap . |
android.disableAutomaticComponentCreation |
true |
AGP 8.0 לא יוצר SoftwareComponent כברירת מחדל. במקום זאת, AGP יוצר SoftwareComponents רק לווריאציות שהוגדרו לפרסום באמצעות ה-DSL של הפרסום. |
דגל יציב חדש לפרופיל ביצוע
AGP כולל את הדגל החדש android.settings.executionProfile
. משתמשים בדגל הזה כדי לבטל את פרופיל ההפעלה שמוגדר כברירת מחדל מתוך SettingsExtension
.
מידע נוסף זמין במאמרי העזרה בנושא תוסף ההגדרות.
כדי לראות תצוגה מקדימה של דגלים ניסיוניים, אפשר לעיין בהערות על גרסת התצוגה המקדימה.
אין תמיכה בהקצאת מאפיינים עצלה ב-Kotlin
אם אתם משתמשים ב-Kotlin DSL של Gradle עבור סקריפטים של build, שימו לב ש-Android Studio ו-AGP 8.0 לא תומכים בהקצאת מאפיינים ניסיונית באמצעות האופרטור =
. מידע נוסף על התכונה הזו זמין בהערות על הגרסה ובמסמכי התיעוד.
קטגוריות של משימות ב-Build Analyzer
החל מ-Android Studio Flamingo, לכלי Build Analyzer יש תצוגת ברירת מחדל חדשה למשימות שמשפיעות על משך הבנייה. אם הפרויקט שלכם משתמש ב-AGP 8.0 או בגרסה מתקדמת יותר, במקום להציג את המשימות בנפרד, Build Analyzer מקבץ אותן לפי קטגוריה. לדוגמה, משימות שספציפיות למשאבי Android, ל-Kotlin או ל-Dexing מקובצות יחד ואז ממוינות לפי משך הבנייה. כך קל לדעת איזו קטגוריה משפיעה הכי הרבה על זמן הבנייה. הרחבה של כל קטגוריה מציגה רשימה של המשימות המתאימות. כדי להציג את המשימות בנפרד, בלי לקבץ אותן, משתמשים בתפריט הנפתח קיבוץ לפי.
פלאגין חדש להגדרות
ב-AGP 8.0.0-alpha09 מוצג פלאגין ההגדרות החדש. התוסף Settings מאפשר לכם לרכז הגדרות גלובליות – הגדרות שחלות על כל המודולים – במקום אחד, כך שלא תצטרכו להעתיק ולהדביק את ההגדרות בכמה מודולים. בנוסף, אפשר להשתמש בתוסף ההגדרות כדי ליצור פרופילים להרצת כלים או הוראות שונות להרצת כלי, ולעבור ביניהם.
כדי להשתמש בפלאגין ההגדרות, צריך להחיל את הפלאגין בקובץ 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
אפשר להגדיר את המאפיין הזה גם באמצעות שורת הפקודה, וכך להגדיר תהליכי עבודה שונים. לדוגמה, אם יש לכם תהליך עבודה של שילוב רציף, אתם יכולים להשתמש בשורת הפקודה כדי לשנות את פרופיל ההפעלה בלי לשנות את הקובץ settings.gradle
:
./gradlew assembleRelease \
-Pandroid.experimental.settings.executionProfile=ci
נדרש JDK 17 כדי להריץ AGP 8.0
כשמשתמשים ב-Android Gradle Plugin 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.0
בעיות שתוקנו | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Android Gradle Plugin |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Dexer (D8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lint Integration |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Shrinker (R8) |
|
פלאגין Android Gradle 8.0.1
בעיות שתוקנו | ||||
---|---|---|---|---|
Shrinker (R8) |
|
פלאגין Android Gradle 8.0.2
בעיות שתוקנו | |||||
---|---|---|---|---|---|
Shrinker (R8) |
|