פלאגין Android Gradle 8.0.0 (אפריל 2023)

הפלאגין Android Gradle 8.0.0 הוא גרסה ראשית שכוללת מגוון של ותכונות ושיפורים.

תאימות

גרסת המינימום גרסת ברירת המחדל הערות
גרדל 8.0 8.0 מידע נוסף על עדכון Gradle
כלים לבניית SDK 30.0.3 30.0.3 התקנה או הגדרה של כלים לבניית SDK.
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)

העדכון הקטן הזה כולל את תיקוני הבאגים הבאים:

בעיות שתוקנו
שגיאה: "אין דרישת גרסה עם המזהה הנתון בטבלה" לאחר שדרוג AGP 7.2.2 -> 7.4.0
R8 NullPointer וגם ב-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 ומקורות של אפליקציות.

מידע נוסף זמין במאמר הבא: בעיה מס' 191813691 תגובה מס' 19.

שינויי תוכנה שעלולים לגרום לכשלים: ערכי ברירת מחדל של אפשרויות build

החל מ-AGP 8.0, ערכי ברירת המחדל של הדגלים האלה השתנו ל- שיפור ביצועי ה-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 AGP 8.0 נכשל בגרסאות build שמשתמשות ב-R8 אם יש מחלקות חסרות אופטימיזציה טובה יותר של DEX. כדי לפתור את הבעיה, צריך להוסיף ספריות חסרות או -dontwarn לשמור את הכללים. לפרטים נוספים, לראות חסרות אזהרות מחלקה ב-R8 shrinker.
android.testConfig.useRelativePath true כשיש תמיכה בשימוש במשאבים, בנכסים ובמניפסטים של Android בדיקות יחידה מופעלות, AGP 8.0 יוצר קובץ test_config.properties שמכיל רק יחסי . כך ניתן להבטיח שבדיקות היחידה של Android תמיד יוכלו להשתמש ב-Gradle של build מטמון.
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 משמש לחישוב מיפויים יחסיים של מיפויים של נתיבי משאבים, ולכן Gradle מעודכנים בתדירות גבוהה יותר.
android.cacheCompileLibResources true עכשיו אפשר לשמור במטמון משאבים של ספרייה מורכבת כברירת מחדל כי Gradle עוקב אחרי קובצי משאבים ביחס למיקום הפרויקט. נדרשת android.enableSourceSetPathsMap כדי להפעיל.
android.disableAutomaticComponentCreation true AGP 8.0 לא יוצר רכיב תוכנה כברירת מחדל. במקום זאת, AGP יוצר רכיבי תוכנה רק לווריאציות שהוגדרו לפרסום באמצעות ה-DSL לפרסום.

סימון יציב חדש לפרופיל ביצוע

AGP כולל את הדגל החדש android.settings.executionProfile. שימוש בסימון הזה כדי לשנות את פרופיל הביצוע שמוגדר כברירת מחדל SettingsExtension למידע נוסף, קראו את מאמרי העזרה של יישומי הפלאגין להגדרות.

כדי לראות תצוגה מקדימה של דגלים מהניסוי, אפשר לעיין תצוגה מקדימה של נתוני הגרסה.

אין תמיכה בהקצאת נכסים מדורגת ב-Kotlin

אם משתמשים ב-Kotlin DSL של Gradle לסקריפטים של build, חשוב לשים לב ל-Android Studio ו-AGP 8.0 לא תומכים בהקצאת נכסים ניסיוניים באמצעות האופרטור =. מידע נוסף על התכונה הזו זמין במאמר נתוני גרסה וגם מסמכי התיעוד.

יצירת קטגוריות של משימות בכלי הניתוח

החל מ-Android Studio Flamingo, ל-Build Analyzer יש תצוגת ברירת מחדל חדשה עבור משימות שמשפיעות על משך הזמן של ה-build. אם בפרויקט שלכם נעשה שימוש ב-AGP 8.0 ואילך, במקום להציג משימות בנפרד, בקטגוריה שלכם. לדוגמה, משימות ספציפיות למשאבי Android, 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 כדי לבנות את האפליקציה, עכשיו נדרש 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.