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().אם אתם מריצים משימות build בהתאמה אישית, כדאי לכם לקרוא על התאמה ל-API החדש ליצירת משימות של Gradle.
-
עכשיו, כשמגדירים
useProguard falseלסוג build מסוים, הפלאגין משתמש ב-R8 במקום ב-ProGuard כדי לצמצם ולהצפין את הקוד והמשאבים של האפליקציה. מידע נוסף על R8 זמין בפוסט הזה בבלוג של מפתחי Android. -
יצירה מהירה יותר של מחלקת 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) מציעה להפעיל את האופטימיזציה הזו כשמסנכרנים את הפרויקט. כברירת מחדל, האופטימיזציה מופעלת גם בפרויקטים חדשים.
כדי להפעיל את האופטימיזציה הזו באופן ידני, לוחצים על 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 Plugin 3.3.0 מתקן את הבעיות הבאות:
- תהליך ה-build קורא ל-
android.support.v8.renderscript.RenderScriptבמקום לגרסת AndroidX, למרות שהכלי Jetifier מופעל - התנגשויות בגלל
androidx-rs.jarכולל חבילה סטטית שלannotation.AnyRes - כשמשתמשים ב-RenderScript, כבר לא צריך להגדיר ידנית את הגרסה של כלי ה-Build בקובצי
build.gradle
- תהליך ה-build קורא ל-