Android Gradle Plugin 3.3.0 (ינואר 2019)
כדי להשתמש בגרסה הזו של הפלאגין ל-Android, צריך:
גרסת מינימום | גרסת ברירת המחדל | הערות | |
---|---|---|---|
Gradle | 4.10.1 | 4.10.1 | מידע נוסף זמין במאמר בנושא עדכון Gradle. כשמשתמשים ב-Gradle 5.0 ומעלה, גודל ה-heap של זיכרון הדמון של Gradle יורד מ-1GB ל-512MB. יכול להיות שהדבר יוביל לרגרסיה בביצועי ה-build. כדי לשנות את הגדרת ברירת המחדל הזו, צריך לציין את גודל הערימה של Gradle daemon בקובץ 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 וכולל תיקוני באגים שונים ושיפורי ביצועים.
תכונות חדשות
-
שיפור בסנכרון של נתיבי מחלקות: כשמבצעים המרה של יחסי תלות בנתיבי מחלקות בזמן ריצה ובזמן קומפילציה, הפלאגין Android Gradle מנסה לתקן קונפליקטים מסוימים בגרסאות של יחסי תלות שמופיעים בכמה נתיבי מחלקות.
לדוגמה, אם נתיב המחלקה של זמן הריצה כולל את ספרייה A בגרסה 2.0, ונתיב המחלקה של הקומפילציה כולל את ספרייה A בגרסה 1.0, הפלאגין מעדכן אוטומטית את התלות בנתיב המחלקה של הקומפילציה לספרייה A בגרסה 2.0 כדי למנוע שגיאות.
עם זאת, אם נתיב המחלקה של זמן הריצה כולל את Library A בגרסה 1.0, והקומפילציה כוללת את Library A בגרסה 2.0, התוסף לא יבצע שדרוג לאחור של התלות בנתיב המחלקה של הקומפילציה ל-Library A בגרסה 1.0, ותוצג שגיאה. מידע נוסף זמין במאמר בנושא פתרון קונפליקטים בין נתיבי מחלקות.
-
שיפור ההידור המצטבר של Java כשמשתמשים במעבדי הערות: העדכון הזה מקצר את זמן הבנייה על ידי שיפור התמיכה בהידור מצטבר של Java כשמשתמשים במעבדי הערות.
הערה: התכונה הזו תואמת ל-Gradle מגרסה 4.10.1 ואילך, למעט Gradle 5.1, בגלל בעיה מספר 8194 ב-Gradle.
-
בפרויקטים שמשתמשים ב-Kapt (רוב הפרויקטים שמבוססים על Kotlin בלבד ופרויקטים היברידיים של Kotlin-Java): קומפילציה מצטברת של Java מופעלת, גם כשמשתמשים ב-data binding או בתוסף retro-lambda. העיבוד של ההערות על ידי משימת Kapt עדיין לא מצטבר.
-
לפרויקטים שלא משתמשים ב-Kapt (פרויקטים ב-Java בלבד): אם כל מעבדי ההערות שבהם אתם משתמשים תומכים בעיבוד מצטבר של הערות, קומפילציית Java מצטברת מופעלת כברירת מחדל. כדי לעקוב אחרי ההטמעה של מעבד ההערות המצטבר, אפשר לעיין בבעיה מספר 5277 ב-Gradle.
עם זאת, אם אחד או יותר ממעבדי ההערות לא תומכים בבנייה מצטברת, קומפילציית Java מצטברת לא מופעלת. במקום זאת, אפשר לכלול את הדגל הבא בקובץ
gradle.properties
:android.enableSeparateAnnotationProcessing=true
כשכוללים את הדגל הזה, הפלאגין Android Gradle מפעיל את מעבדי ההערות במשימה נפרדת ומאפשר למשימת הקומפילציה של Java לפעול באופן מצטבר.
-
-
מידע טוב יותר לניפוי באגים כשמשתמשים ב-API שיצא משימוש: אם התוסף מזהה שאתם משתמשים ב-API שכבר לא נתמך, הוא יכול לספק עכשיו מידע מפורט יותר שיעזור לכם להבין איפה נעשה שימוש ב-API הזה. כדי לראות את המידע הנוסף, צריך לכלול את השורות הבאות בקובץ
gradle.properties
של הפרויקט:android.debug.obsoleteApi=true
אפשר גם להעביר את האפשרות
-Pandroid.debug.obsoleteApi=true
משורת הפקודה כדי להפעיל את הדגל. -
אפשר להריץ בדיקות של מכשור במודולים של תכונות משורת הפקודה.
שינויים בהתנהגות
-
הגדרה של משימות עצלניות: התוסף משתמש עכשיו ב-API החדש ליצירת משימות של Gradle כדי להימנע מאתחול והגדרה של משימות שלא נדרשות להשלמת הבנייה הנוכחית (או משימות שלא נמצאות בתרשים המשימות של הביצוע). לדוגמה, אם יש לכם כמה וריאציות של Build, כמו וריאציות של Build מסוג release ו-debug, ואתם יוצרים את גרסת ה-debug של האפליקציה, הפלאגין לא יאתחל ולא יגדיר משימות עבור גרסת ה-release של האפליקציה.
יכול להיות שעדיין תהיה חובה להגדיר משימות כשקוראים לשיטות ישנות מסוימות ב-Variants API, כמו
variant.getJavaCompile()
. כדי לוודא שהגרסה שלכם עברה אופטימיזציה להגדרת משימות עצלה, מפעילים שיטות חדשות שמחזירות במקום זאת אובייקט TaskProvider, כמוvariant.getJavaCompileProvider()
.אם אתם מריצים משימות בנייה בהתאמה אישית, כדאי לכם לקרוא על התאמה ל-API החדש ליצירת משימות של Gradle.
-
עכשיו, כשמגדירים
useProguard false
לסוג build מסוים, הפלאגין משתמש ב-R8 במקום ב-ProGuard כדי לצמצם ולהצפין את הקוד והמשאבים של האפליקציה. מידע נוסף על R8 זמין בפוסט הזה בבלוג של מפתחי Android. -
יצירה מהירה יותר של מחלקת R לפרויקטים של ספריות: בעבר, הפלאגין Android Gradle היה יוצר קובץ
R.java
לכל אחת מהתלויות של הפרויקט, ואז קומפילציה של מחלקות ה-R האלה לצד המחלקות האחרות של האפליקציה. התוסף יוצר עכשיו קובץ JAR שמכיל את מחלקת ה-R המהודרת של האפליקציה ישירות, בלי ליצור קודם מחלקות ביניים שלR.java
. האופטימיזציה הזו עשויה לשפר באופן משמעותי את ביצועי הבנייה בפרויקטים שכוללים הרבה פרויקטים משניים של ספריות ותלות, ולשפר את מהירות האינדקס ב-Android Studio. -
כשיוצרים Android App Bundle, קובצי ה-APK שנוצרים מ-App Bundle שמטרגטים 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) מציעה להפעיל את האופטימיזציה הזו כשמסנכרנים את הפרויקט. בפרויקטים חדשים, האופטימיזציה מופעלת כברירת מחדל.
כדי להפעיל את האופטימיזציה הזו באופן ידני, לוחצים על File > Settings > Experimental > Gradle (Android Studio > Preferences > Experimental > Gradle ב-Mac) ומסמנים את התיבה Only sync the active variant.
הערה: האופטימיזציה הזו תומכת באופן מלא בפרויקטים שכוללים את השפות 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 קורא ל-