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] Hard class verification failure on Android 11
|
שינוי שגורם לשבירה: מרחב שמות נדרש בסקריפט build ברמת המודול
צריך להגדיר את מרחב השמות בקובץ build.gradle.kts
ברמת המודול, ולא בקובץ המניפסט. אפשר להתחיל להשתמש בנכס ה-DSL namespace
החל מגרסה AGP 7.3. למידע נוסף, ראו הגדרת מרחב שמות.
כשעוברים ל-DSL של מרחב השמות, חשוב לשים לב לבעיות הבאות:
- בגרסאות קודמות של AGP, מרחב השמות של הבדיקה נגזר מרחב השמות הראשי או ממזהה האפליקציה באופן שגוי במקרים מסוימים. כלי העזר לשדרוג של AGP חוסם את השדרוג אם הוא מזהה שמרחב השמות הראשי של הפרויקט ומרחב השמות לבדיקה זהים. אם השדרוג חסום, צריך לשנות את
testNamespace
באופן ידני ולשנות את קוד המקור בהתאם. - אחרי שמחליפים את מרחב השמות של הבדיקה, יכול להיות שהקוד יתאסף אבל הבדיקות עם המדדים ייכשלו במהלך זמן הריצה. מצב כזה יכול לקרות אם קוד המקור של הבדיקה עם הכלים מתייחס למשאב שמוגדר גם ב-
androidTest
וגם במקורות של האפליקציה.
למידע נוסף, ראו issue #191813691 comment #19.
שינויים משמעותיים: ערכי ברירת המחדל של אפשרויות build
החל מגרסה 8.0 של AGP, ערכי ברירת המחדל של הדגלים האלה השתנו כדי לשפר את ביצועי ה-build. כדי לקבל עזרה בהתאמת הקוד לתמיכה בחלק מהשינויים האלה, תוכלו להשתמש בכלי לשדרוג של AGP (כלים > כלי לשדרוג של AGP). בעזרת אשף השדרוג תוכלו לעדכן את הקוד כך שיתאים להתנהגות החדשה, או להגדיר דגלים כדי לשמר את ההתנהגות הקודמת.
סימון | ערך ברירת המחדל החדש | ערך ברירת המחדל הקודם | הערות |
---|---|---|---|
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 מאולצים
החל מ-AGP 8.0, אי אפשר יותר לשנות את הערכים של הדגלים האלה. אם מציינים אותם בקובץ gradle.properties
, המערכת תתעלם מהערך ותוצג אזהרה ב-AGP.
סימון | ערך נאכף | הערות |
---|---|---|
android.dependencyResolutionAtConfigurationTime.warn |
true |
AGP 8.0 פולט אזהרה אם הוא מזהה פתרון של הגדרות במהלך שלב ההגדרה, כי זה משפיע לרעה על זמני ההגדרה של Gradle. |
android.r8.failOnMissingClasses |
true |
כדי להבטיח אופטימיזציה טובה יותר של DEX, AGP 8.0 נכשל ב-builds שמשתמשים ב-R8 אם חסרות בהם כיתות. כדי לפתור את הבעיה, צריך להוסיף את הספריות החסרות או את כללי השמירה -dontwarn . פרטים נוספים זמינים במאמר אזהרות חסרות לגבי סיווגים ב-R8 shrinker. |
android.testConfig.useRelativePath |
true |
כשמפעילים תמיכה בשימוש במשאבים, בנכסים ובמניפסטים של Android בבדיקות יחידה, AGP 8.0 יוצר קובץ test_config.properties שמכיל רק נתיבים יחסיים. כך אפשר להבטיח שבדיקות יחידה של Android תמיד יוכלו להשתמש במטמון ה-build של Gradle. |
android.useNewJarCreator |
true |
AGP משתמש בספרייה Zipflinger כשיוצר קובצי JAR כדי לשפר את ביצועי ה-build. |
android.bundletool.includeRepositoriesInDependencyReport |
true |
כשמפעילים את האפשרות להוסיף מידע על יחסי התלות של SDK ב-AAB וב-APK, AGP 8.0 מוסיף למידע הזה גם רשימה של מאגרי פרויקטים. מידע נוסף זמין במאמר מידע על יחסי תלות ב-Play Console. |
android.enableArtProfiles |
true |
עכשיו תמיד נוצרים פרופילים בסיסיים. פרטים נוספים זמינים במאמר פרופי בסיס. |
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 Resources, ל-Kotlin או ל-Dexing מקובצות יחד ולאחר מכן ממוינות לפי משך הזמן של ה-build. כך תוכלו לדעת בקלות איזו קטגוריה משפיעה הכי הרבה על זמן ה-build. כשמרחיבים כל קטגוריה, מוצגת רשימה של המשימות התואמות. כדי להציג את המשימות בנפרד, ללא קיבוץ, משתמשים בתפריט הנפתח Group by.
פלאגין הגדרות חדש
ב-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
נדרש JDK 17 כדי להריץ את AGP 8.0
אם אתם משתמשים ב-Android Gradle Plugin 8.0 כדי ליצור את האפליקציה, עכשיו נדרשת גרסה 17 של JDK כדי להריץ את 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 plugin 8.0.0
בעיות שתוקנו | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Android Gradle Plugin |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Dexer (D8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
שילוב איתור שגיאות בקוד |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Shrinker (R8) |
|
Android Gradle plugin 8.0.1
בעיות שתוקנו | ||||
---|---|---|---|---|
Shrinker (R8) |
|
Android Gradle plugin 8.0.2
בעיות שתוקנו | |||||
---|---|---|---|---|---|
Shrinker (R8) |
|