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 | 28.0.3 | 28.0.3 | התקנה או הגדרה של כלים לבניית SDK. |
העדכון המשני הזה תומך בתאימות להגדרות ברירת מחדל חדשות ולתכונות חדשות של חשיפה של חבילות ב-Android 11.
פרטים נוספים זמינים בנתוני הגרסה 4.0.1.
3.3.2 (מרץ 2019)
העדכון הקטן הזה תומך ב-Android Studio 3.3.2 וכולל מגוון תיקוני באגים ושיפורי ביצועים. כדי לראות רשימה של תיקוני באגים בולטים, אפשר לקרוא את הפוסט הרלוונטי ב בלוג של עדכוני הגרסאות.
3.3.1 (פברואר 2019)
העדכון המשני הזה תומך ב-Android Studio 3.3.1 וכולל תיקוני באגים ושיפורי ביצועים שונים.
תכונות חדשות
-
סנכרון משופר של ה-classpath: כשפותרים בעיות של יחסי תלות בזמן הריצה והידור של נתיבי מחלקות (classpaths), הפלאגין של Android Gradle מנסה לתקן התנגשויות מסוימות בין גרסאות downstream של יחסי תלות שמופיעים במספר נתיבי כיתה.
לדוגמה, אם נתיב הספריות בסביבת זמן הריצה כולל את ספרייה א' בגרסה 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 מצטבר מופעל גם כשמשתמשים בקישור נתונים או בפלאגין בסגנון רטרו-lambda. עיבוד ההערות על ידי המשימה Kapt עדיין לא מצטבר.
-
בפרויקטים שלא משתמשים ב-Kapt (פרויקטים של Java בלבד): אם כל מעבדי התווית שבהם אתם משתמשים תומכים בעיבוד מצטבר של תווית, הידור מצטבר של Java מופעל כברירת מחדל. כדי לעקוב אחרי האימוץ המצטבר של מעבדי הערות, אפשר לצפות בגיליון Gradle מספר 5277.
עם זאת, אם מעבד הערות אחד או יותר לא תומכים בגרסאות build מצטברות, לא תופעל הידור המצטבר של 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.
-
בסוג build מסוים, בזמן ההגדרה של
useProguard false
הפלאגין משתמש עכשיו ב-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, עכשיו תוכלו לבצע אופטימיזציה של סנכרון הפרויקטים על ידי הגבלת הסנכרון רק לוריאנטים שבחרתם כרגע.
כדי להפעיל את האופטימיזציה הזו, צריך להשתמש ב-Android Studio בגרסה 3.3 ואילך עם Android Gradle Plugin בגרסה 3.3.0 ואילך. אם אתם עומדים בדרישות האלה, IDE יבקש מכם להפעיל את האופטימיזציה הזו כשאתם מסנכרנים את הפרויקט. האופטימיזציה מופעלת כברירת מחדל גם בפרויקטים חדשים.
כדי להפעיל את האופטימיזציה הזו באופן ידני, לוחצים על קובץ > הגדרות > ניסיוני > Gradle (Android Studio > העדפות > ניסיוני > Gradle ב-Mac) ובוחרים את התיבה סנכרון של הווריאנט הפעיל בלבד.
הערה: האופטימיזציה הזו תומכת באופן מלא בפרויקטים שכוללים את השפות Java ו-C++, ויש לה תמיכה מסוימת ב-Kotlin. כשמפעילים את האופטימיזציה בפרויקטים עם תוכן ב-Kotlin, בסנכרון Gradle, נעשה שימוש בגרסאות מלאות באופן פנימי.
-
הורדה אוטומטית של חבילות SDK חסרות: הפונקציונליות הזו הורחבה לתמיכה ב-NDK. מידע נוסף זמין במאמר הורדה אוטומטית של חבילות חסרות באמצעות Gradle.
תיקוני באגים
-
הפלאגין Android Gradle 3.3.0 פותר את הבעיות הבאות:
- תהליך ה-build קורא ל-
android.support.v8.renderscript.RenderScript
במקום לגרסת AndroidX, למרות ש-Jetifier מופעל - התנגשויות עקב
androidx-rs.jar
, כוללannotation.AnyRes
בחבילה סטטית - כשמשתמשים ב-RenderScript, כבר לא צריך להגדיר באופן ידני את גרסת הכלים של Build בקובצי
build.gradle
- תהליך ה-build קורא ל-