הפלאגין 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 Plugin 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 at 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
וגם במקורות של האפליקציה.
למידע נוסף, ראו issue #191813691 comment #19.
שינויים משמעותיים: ערכי ברירת המחדל של אפשרויות build
החל מ-AGP 8.0, ערכי ברירת המחדל של הדגלים האלה השתנו ל- שיפור ביצועי ה-build. כדי לקבל עזרה בהתאמת הקוד לתמיכה בחלק מהשינויים האלה, תוכלו להשתמש ב-AGP Upgrade Assistant (כלים > 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 מצב מלא. |
שינויים משמעותיים: ערכי אפשרויות build מאולצים
החל מ-AGP 8.0, לא ניתן יותר לשנות את הערכים של הדגלים האלה. אם מציינים אותם בקובץ gradle.properties
, המערכת תתעלם מהערך ותודפס אזהרה ב-AGP.
סימון | ערך נאכף | הערות |
---|---|---|
android.dependencyResolutionAtConfigurationTime.warn |
true |
AGP 8.0 פולט אזהרה אם הוא מזהה פתרון של הגדרות במהלך שלב ההגדרה, כי זה משפיע לרעה על זמני ההגדרה של Gradle. |
android.r8.failOnMissingClasses |
true |
AGP 8.0 נכשל בגרסאות build שמשתמשות ב-R8 אם יש מחלקות חסרות
לבצע אופטימיזציה טובה יותר של DEX. כדי לפתור את הבעיה, צריך להוסיף
ספריות חסרות או -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 ו-APKs, כמו כן, AGP 8.0 מוסיף רשימה של מאגרי פרויקטים למידע הזה. מידע נוסף זמין במאמר מידע על יחסי תלות ב-Play Console. |
android.enableArtProfiles |
true |
מעכשיו, פרופילים בסיסיים של משתמשים תמיד נוצרים. פרטים נוספים זמינים במאמר פרופילים בסיסיים. |
android.enableNewResourceShrinker |
true |
שימוש בהטמעה החדשה של המשאב shinker כברירת מחדל. הגרסה החדשה Resource shrinker כולל תמיכה בתכונות דינמיות. |
android.enableSourceSetPathsMap |
true |
משמש לחישוב מיפויים יחסיים של נתיבי משאבים, כך שה-builds של Gradle מתעדכנים לעיתים קרובות יותר. |
android.cacheCompileLibResources |
true |
עכשיו אפשר לשמור במטמון כברירת מחדל משאבים של ספריות שנאספו, כי Gradle עוקב אחרי קובצי המשאבים ביחס למיקום הפרויקט. נדרשת
android.enableSourceSetPathsMap כדי להפעיל. |
android.disableAutomaticComponentCreation |
true |
AGP 8.0 לא יוצר רכיב תוכנה כברירת מחדל. במקום זאת, מערכת AGP יוצרת את SoftwareComponents רק לגרסאות שהוגדר להן לפרסם באמצעות ה-DSL לפרסום. |
דגל יציב חדש לפרופיל הביצוע
AGP כולל את הדגל החדש android.settings.executionProfile
. שימוש בסימון הזה כדי
לשנות את פרופיל הביצוע שמוגדר כברירת מחדל
SettingsExtension
מידע נוסף זמין במסמכי התיעוד של הפלאגין של ההגדרות.
כדי לראות תצוגה מקדימה של דגלים ניסיוניים, אפשר לעיין בנתוני הגרסה של הגרסה המקדימה.
אין תמיכה בהקצאת מאפיינים איטיים (lazy) ב-Kotlin
אם משתמשים ב-Kotlin DSL של Gradle לסקריפטים של build, חשוב לשים לב ל-Android
Studio ו-AGP 8.0 לא תומכים בהקצאת נכסים ניסיוניים באמצעות
האופרטור =
. מידע נוסף על התכונה הזו זמין במאמר
נתוני גרסה
וגם
מסמכי התיעוד.
יצירת קטגוריות של משימות בכלי הניתוח
החל מ-Android Studio Flamingo, ל-Build Analyzer יש תצוגת ברירת מחדל חדשה עבור משימות שמשפיעות על משך הזמן של ה-build. אם בפרויקט שלכם נעשה שימוש ב-AGP 8.0 ואילך, במקום להציג משימות בנפרד, בקטגוריה שלכם. לדוגמה, משימות ספציפיות ל-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 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lint Integration |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Shrinker (R8) |
|
פלאגין Android Gradle 8.0.1
בעיות שתוקנו | ||||
---|---|---|---|---|
Shrinker (R8) |
|
Android Gradle plugin 8.0.2
בעיות שתוקנו | |||||
---|---|---|---|---|---|
Shrinker (R8) |
|