פלאגין של Android Gradle 3.3.0 (ינואר 2019)
כדי להשתמש בגרסה הזו של הפלאגין ל-Android, צריך:
| גרסת המינימום | גרסת ברירת המחדל | הערות | |
|---|---|---|---|
| Gradle | 4.10.1 | 4.10.1 | מידע נוסף זמין במאמר בנושא עדכון Gradle. כשמשתמשים ב-Gradle 5.0 ומעלה, גודל ה-heap של זיכרון הדמון של Gradle יורד מ-1GB ל-512MB. התוצאה יכולה להיות רגרסיה בביצועי ה-build. כדי לשנות את הגדרת ברירת המחדל הזו, מציינים את גודל ה-heap של 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 כדי למנוע שגיאות.
עם זאת, אם נתיב המחלקות של זמן הריצה כולל את ספרייה א' בגרסה 1.0, והקומפילציה כוללת את ספרייה א' בגרסה 2.0, התוסף לא יבצע שדרוג לאחור של התלות בנתיב המחלקות של הקומפילציה לספרייה א' בגרסה 1.0, ותוצג שגיאה. מידע נוסף זמין במאמר Fix conflicts between classpaths.
-
שיפור ההידור המצטבר של Java כשמשתמשים במעבדי הערות: העדכון הזה מקצר את משך זמן של תהליך build על ידי שיפור התמיכה בהידור מצטבר של Java כשמשתמשים במעבדי הערות.
הערה: התכונה הזו תואמת ל-Gradle מגרסה 4.10.1 ואילך, למעט Gradle מגרסה 5.1, בגלל בעיה מספר 8194 ב-Gradle.
-
בפרויקטים שמשתמשים ב-Kapt (רוב הפרויקטים שמבוססים על Kotlin בלבד ופרויקטים היברידיים של Kotlin-Java): הידור Java מצטבר מופעל, גם כשמשתמשים ב-data binding או בתוסף retro-lambda. העיבוד של ההערות על ידי משימת Kapt עדיין לא מצטבר.
-
לפרויקטים שלא משתמשים ב-Kapt (פרויקטים ב-Java בלבד): אם כל מעבדי ההערות שבהם אתם משתמשים תומכים בעיבוד הערות מצטבר, קומפילציית Java מצטברת מופעלת כברירת מחדל. כדי לעקוב אחרי ההטמעה של מעבד אנוטציות (Annotation processor) מצטבר, אפשר לעיין בבעיה מספר 5277 ב-Gradle.
עם זאת, אם אחד או יותר ממעבדי ההערות לא תומכים בבנייה מצטברת, קומפילציית 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 מסוג release ו-debug, ואתם יוצרים את גרסת ה-debug של האפליקציה, הפלאגין לא יאתחל ולא יגדיר משימות לגרסת ה-release של האפליקציה.
יכול להיות שעדיין תצטרכו להגדיר משימות אם תשתמשו בשיטות ישנות יותר ב-Variants API, כמו
variant.getJavaCompile(). כדי לוודא שהגרסה שלכם מותאמת להגדרת משימות עצלה, מפעילים שיטות חדשות שמחזירות במקום זאת אובייקט TaskProvider, כמוvariant.getJavaCompileProvider().אם אתם מריצים משימות build בהתאמה אישית, כדאי לכם לקרוא על התאמה ל-API החדש ליצירת משימות של Gradle.
-
עכשיו, כשמגדירים
useProguard falseלסוג build מסוים, הפלאגין משתמש ב-R8 במקום ב-ProGuard כדי לכווץ את הקוד והמשאבים של האפליקציה ולבצע ערפול קוד (obfuscation). מידע נוסף על R8 זמין בפוסט הזה בבלוג של מפתחי Android. -
יצירה מהירה יותר של מחלקת R לפרויקטים של ספריות: בעבר, הפלאגין Android Gradle היה יוצר קובץ
R.javaלכל אחת מהתלויות של הפרויקט, ואז קומפילציה של מחלקות ה-R האלה לצד המחלקות האחרות של האפליקציה. התוסף יוצר עכשיו קובץ JAR שמכיל את המחלקה R המהודרת של האפליקציה ישירות, בלי ליצור קודם מחלקותR.javaביניים. האופטימיזציה הזו יכולה לשפר משמעותית את ביצועי ה-build בפרויקטים שכוללים הרבה תתי-פרויקטים ותלויות של ספריות, ולשפר את מהירות האינדוקס ב-Android Studio. -
כשיוצרים קובץ Android App Bundle, קובצי ה-APK שנוצרים מקובץ ה-AAB הזה ומיועדים ל-Android 6.0 (רמת API 23) ומעלה כוללים עכשיו כברירת מחדל גרסאות לא דחוסות של הספריות המקוריות. האופטימיזציה הזו מונעת את הצורך של המכשיר ליצור עותק של הספרייה, וכך מקטינה את הגודל של האפליקציה בדיסק. אם אתם רוצים להשבית את האופטימיזציה הזו, מוסיפים את השורה הבאה לקובץ
gradle.properties:android.bundle.enableUncompressedNativeLibs = false -
התוסף אוכף גרסאות מינימליות של תוספים מסוימים של צד שלישי.
-
סנכרון פרויקט עם וריאנט יחיד: סנכרון הפרויקט עם הגדרת ה-build הוא שלב חשוב כדי ש-Android Studio יבין את מבנה הפרויקט. עם זאת, התהליך הזה יכול להיות ארוך בפרויקטים גדולים. אם הפרויקט שלכם משתמש בכמה וריאציות של build, עכשיו אתם יכולים לייעל את הסנכרון של הפרויקט על ידי הגבלתו רק לווריאציה שבחרתם כרגע.
כדי להפעיל את האופטימיזציה הזו, צריך להשתמש ב-Android Studio מגרסה 3.3 ואילך עם פלאגין של Android Gradle מגרסה 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 קורא ל-