Android Gradle Plugin 3.3.0 (ינואר 2019)
כדי להשתמש בגרסה הזו של הפלאגין ל-Android, נדרשים:
גרסת מינימום | גרסת ברירת המחדל | הערות | |
---|---|---|---|
Gradle | 4.10.1 | 4.10.1 | מידע נוסף זמין במאמר עדכון Gradle. כשמשתמשים ב-Gradle מגרסה 5.0 ואילך, גודל ברירת המחדל של אשכול הזיכרון של הדימון של Gradle יורד מ-1GB ל-512MB. כתוצאה מכך, יכול להיות שתהיה רגרסיה בביצועי ה-build. כדי לשנות את הגדרת ברירת המחדל הזו, מציינים את גודל האשפה של הדימון של Gradle בקובץ gradle.properties של הפרויקט. |
SDK Build Tools | 28.0.3 | 28.0.3 | מתקינים או מגדירים את SDK Build Tools. |
העדכון המשני הזה תומך בתאימות להגדרות ברירת מחדל ולתכונות חדשות של חשיפה של חבילות ב-Android 11.
פרטים נוספים זמינים בנתוני הגרסה של 4.0.1.
3.3.2 (מרץ 2019)
העדכון המשני הזה תומך ב-Android Studio 3.3.2 וכולל תיקוני באגים ושיפורי ביצועים שונים. כדי לראות רשימה של תיקוני באגים בולטים, אפשר לקרוא את הפוסט הרלוונטי ב בלוג של עדכוני הגרסאות.
3.3.1 (פברואר 2019)
העדכון המשני הזה תומך ב-Android Studio 3.3.1 וכולל תיקוני באגים ושיפורי ביצועים שונים.
תכונות חדשות
-
סנכרון משופר של classpath: כשפותרים יחסי תלות ב-classpath של זמן הריצה וב-classpath של זמן הידור, הפלאגין של Android Gradle מנסה לפתור התנגשויות מסוימות בגרסאות במורד הזרם של יחסי תלות שמופיעים בכמה classpaths.
לדוגמה, אם נתיב הספריות בסביבת זמן הריצה כולל את ספרייה א' בגרסה 2.0, ונתיב הספריות בתהליך הידור כולל את ספרייה א' בגרסה 1.0, הפלאגין מעדכן באופן אוטומטי את התלות בנתיב הספריות בתהליך הידור לספרייה א' בגרסה 2.0 כדי למנוע שגיאות.
עם זאת, אם נתיב הספריות בסביבת זמן הריצה כולל את ספריית א' בגרסה 1.0 והקמפילציה כוללת את ספריית א' בגרסה 2.0, הפלאגין לא משדרג לאחור את התלות בנתיב הספריות של הקמפילציה לספריית א' בגרסה 1.0, ותופיע הודעת שגיאה. מידע נוסף זמין במאמר פתרון קונפליקטים בין נתיבי classpath.
-
שיפור בתהליך הידור המצטבר של Java כשמשתמשים במעבדי הערות: העדכון הזה מפחית את זמן ה-build על ידי שיפור התמיכה בתהליך הידור המצטבר של Java כשמשתמשים במעבדי הערות.
הערה: התכונה הזו תואמת ל-Gradle מגרסה 4.10.1 ואילך, מלבד Gradle 5.1 בגלל בעיה ב-Gradle מספר 8194.
-
בפרויקטים שמשתמשים ב-Kapt (רוב הפרויקטים ב-Kotlin בלבד ופרויקטים היברידיים של Kotlin-Java): הידור Java מצטבר מופעל, גם אם משתמשים בקישור נתונים או בפלאגין retro-lambda. עיבוד ההערות על ידי המשימה Kapt עדיין לא מצטבר.
-
בפרויקטים שלא משתמשים ב-Kapt (פרויקטים של Java בלבד): אם כל מעבדי התווית שבהם אתם משתמשים תומכים בעיבוד מצטבר של תווית, הידור מצטבר של Java מופעל כברירת מחדל. כדי לעקוב אחרי השימוש המצטבר במעבד התווית, אפשר לעיין בבעיה 5277 ב-Gradle.
עם זאת, אם מעבד אחד או יותר של הערות לא תומך ב-builds מצטברים, הידור Java מצטבר לא יופעל. במקום זאת, אפשר לכלול את הדגל הבא בקובץ
gradle.properties
:android.enableSeparateAnnotationProcessing=true
כשמצרפים את הדגל הזה, הפלאגין של Android Gradle מפעיל את מעבדי ההערות במשימה נפרדת ומאפשר למשימות הידור Java לפעול באופן מצטבר.
-
-
מידע משופר על ניפוי באגים כשמשתמשים ב-API לא תקין: כשהתוסף מזהה שאתם משתמשים ב-API שכבר אין לו תמיכה, הוא יכול לספק עכשיו מידע מפורט יותר שיעזור לכם לקבוע איפה נעשה שימוש ב-API הזה. כדי לראות את המידע הנוסף, צריך לכלול את הפרטים הבאים בקובץ
gradle.properties
של הפרויקט:android.debug.obsoleteApi=true
אפשר גם להפעיל את הדגל על ידי העברת הערך
-Pandroid.debug.obsoleteApi=true
משורת הפקודה. -
אפשר להריץ בדיקות של מכשירי מדידה במודולים של תכונות משורת הפקודה.
שינויים בהתנהגות
-
הגדרת משימות בזמנן: הפלאגין משתמש עכשיו ב-Gradle’s new task creation API כדי להימנע מהפעלה והגדרה של משימות שלא נדרשות להשלמת ה-build הנוכחי (או משימות שלא נמצאות בתרשים המשימות לביצוע). לדוגמה, אם יש לכם כמה וריאנטים של גרסאות build, כמו וריאנטים של גרסאות build מסוג 'release' ו-'debug', ואתם יוצרים את הגרסה 'debug' של האפליקציה, הפלאגין ימנע את האיפוס וההגדרה של המשימות לגרסה 'release' של האפליקציה.
קריאה לשיטות מסוימות מדור קודם ב-Variants API, כמו
variant.getJavaCompile()
, עדיין עשויה לאלץ הגדרת משימות. כדי לוודא שה-build עבר אופטימיזציה להגדרת משימות מושתהות, צריך להפעיל שיטות חדשות שמחזירות אובייקט TaskProvider במקום זאת, כמוvariant.getJavaCompileProvider()
.אם אתם מבצעים משימות build בהתאמה אישית, כדאי לקרוא את המאמר בנושא התאמה ל-API החדש ליצירת משימות של Gradle.
-
כשמגדירים את
useProguard false
לסוג build נתון, הפלאגין משתמש עכשיו ב-R8 במקום ב-ProGuard כדי לכווץ ולערפל את הקוד והמשאבים של האפליקציה. מידע נוסף על R8 זמין בפוסט הזה בבלוג של Android Developers. -
יצירה מהירה יותר של כיתות R בפרויקטים של ספריות: בעבר, הפלאגין של Android Gradle יצר קובץ
R.java
לכל אחת מהתלות של הפרויקט, ולאחר מכן תיעד את כיתות ה-R האלה לצד הכיתות האחרות של האפליקציה. הפלאגין יוצר עכשיו קובץ JAR שמכיל את הכיתה המתומצת של R באפליקציה ישירות, בלי ליצור קודם כיתות ביניים מסוגR.java
. האופטימיזציה הזו עשויה לשפר משמעותית את ביצועי ה-build בפרויקטים שכוללים הרבה ספריות, יחסי תלות ופרויקטים משניים, וגם לשפר את מהירות ההוספה לאינדקס ב-Android Studio. -
כשמפתחים Android App Bundle, חבילות ה-APK שנוצרות מחבילת האפליקציות הזו ומטורגטות ל-Android 6.0 (רמת API 23) ואילך כוללות עכשיו כברירת מחדל גרסאות לא דחוסות של הספריות המקומיות. האופטימיזציה הזו מונעת מהמכשיר ליצור עותק של הספרייה, וכך מקטינה את הגודל של האפליקציה בדיסק. אם אתם מעדיפים להשבית את האופטימיזציה הזו, צריך להוסיף את הקטע הבא לקובץ
gradle.properties
:android.bundle.enableUncompressedNativeLibs = false
-
הפלאגין אוכף גרסאות מינימום של פלאגינים מסוימים של צד שלישי.
-
סנכרון של פרויקט עם גרסה אחת: סנכרון הפרויקט עם הגדרות ה-build הוא שלב חשוב שעוזר ל-Android Studio להבין את המבנה של הפרויקט. עם זאת, התהליך הזה יכול להיות זמן רב בפרויקטים גדולים. אם בפרויקט שלכם נעשה שימוש במספר וריאנטים של גרסאות build, עכשיו תוכלו לבצע אופטימיזציה של סנכרון הפרויקטים על ידי הגבלת הסנכרון רק לגרסת ה-build שבחרתם כרגע.
כדי להפעיל את האופטימיזציה הזו, צריך להשתמש ב-Android Studio בגרסה 3.3 ואילך עם Android Gradle Plugin בגרסה 3.3.0 ואילך. אם אתם עומדים בדרישות האלה, IDE יבקש מכם להפעיל את האופטימיזציה הזו כשאתם מסנכרנים את הפרויקט. האופטימיזציה מופעלת כברירת מחדל גם בפרויקטים חדשים.
כדי להפעיל את האופטימיזציה הזו באופן ידני, לוחצים על קובץ > הגדרות > ניסיוני > Gradle (Android Studio > העדפות > ניסיוני > Gradle ב-Mac) ובוחרים את התיבה סנכרון של הווריאנט הפעיל בלבד.
הערה: האופטימיזציה הזו תומכת באופן מלא בפרויקטים שכוללים את השפות Java ו-C++, ויש לה תמיכה מסוימת ב-Kotlin. כשמפעילים את האופטימיזציה לפרויקטים עם תוכן Kotlin, סנכרון Gradle חוזר לשימוש בגרסאות מלאות באופן פנימי.
-
הורדה אוטומטית של חבילות SDK חסרות: הפונקציונליות הזו הורחבה לתמיכה ב-NDK. מידע נוסף זמין במאמר הורדה אוטומטית של חבילות חסרות באמצעות Gradle.
תיקוני באגים
-
בגרסה 3.3.0 של הפלאגין של Android Gradle תוקנו הבעיות הבאות:
- תהליך ה-build קורא ל-
android.support.v8.renderscript.RenderScript
במקום לגרסת AndroidX, למרות ש-Jetifier מופעל - התנגשויות עקב
androidx-rs.jar
, כוללannotation.AnyRes
בחבילה סטטית - כשמשתמשים ב-RenderScript, כבר לא צריך להגדיר את הגרסה של Build Tools באופן ידני בקובצי
build.gradle
- תהליך ה-build קורא ל-