Android Gradle Plugin 3.4.0 (אפריל 2019)
כדי להשתמש בגרסה הזו של הפלאגין ל-Android, נדרשים:
גרסת מינימום | גרסת ברירת המחדל | הערות | |
---|---|---|---|
Gradle | 5.1.1 | 5.1.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.4.2 (יולי 2019)
העדכון המשני הזה תומך ב-Android Studio 3.4.2 וכולל תיקוני באגים ושיפורי ביצועים שונים. כדי לראות רשימה של תיקוני באגים בולטים, אפשר לקרוא את הפוסט הרלוונטי ב בלוג של עדכוני הגרסאות.
3.4.1 (מאי 2019)
העדכון המשני הזה תומך ב-Android Studio 3.4.1 וכולל תיקוני באגים ושיפורי ביצועים שונים. כדי לראות רשימה של תיקוני באגים בולטים, אפשר לקרוא את הפוסט הרלוונטי ב בלוג של עדכוני הגרסאות.
תכונות חדשות
-
הגדרות אישיות חדשות של יחסי תלות לבדיקות איתור שגיאות בקוד: ההתנהגות של
lintChecks
השתנתה והוספה הגדרת תלות חדשה,lintPublish
, כדי לתת לכם יותר שליטה על בדיקות איתור השגיאות שיארזו בספריות של Android.-
lintChecks
: זוהי הגדרה קיימת שצריך להשתמש בה לבדיקות איתור שגיאות בקוד (lint) שרוצים להריץ רק כשמפתחים את הפרויקט באופן מקומי. אם השתמשתם בעבר בהגדרת התלותlintChecks
כדי לכלול בדיקות איתור שגיאות בקוד ב-AAR שפורסם, תצטרכו להעביר את יחסי התלות האלה ולהשתמש במקום זאת בהגדרה החדשה שלlintPublish
שמתוארת בהמשך. -
lintPublish
: משתמשים בהגדרה החדשה הזו בפרויקטים של ספריות לבדיקות איתור שגיאות בקוד שרוצים לכלול ב-AAR שפורסם, כפי שמתואר בהמשך. פירוש הדבר הוא שגם בפרויקטים שמשתמשים בספרייה שלכם יתבצעו בדיקות ה-lint האלה.
בדוגמת הקוד הבאה נעשה שימוש בשתי הגדרות התלות בפרויקט מקומי של ספריית Android.
dependencies { // Executes lint checks from the ':lint' project at build time. lintChecks project(':lint') // Packages lint checks from the ':lintpublish' in the published AAR. lintPublish project(':lintpublish') }
dependencies { // Executes lint checks from the ':lint' project at build time. lintChecks(project(":lint")) // Packages lint checks from the ':lintpublish' in the published AAR. lintPublish(project(":lintpublish")) }
-
באופן כללי, המהירות הכוללת של משימות האריזה והחתימה אמורה להשתפר. אם שמתם לב לירידה בביצועים שקשורה למשימות האלה, דווחו על באג.
-
שינויים בהתנהגות
-
אזהרה על הוצאה משימוש של הפלאגין של תכונות של אפליקציות אינסטנט ל-Android: אם אתם עדיין משתמשים בפלאגין
com.android.feature
כדי ליצור את האפליקציה ללא התקנה, תופיע אזהרה על הוצאה משימוש בפלאגין Android Gradle 3.4.0. כדי לוודא שעדיין תוכלו ליצור אפליקציה ללא התקנה בגרסאות עתידיות של הפלאגין, עליכם להעביר את האפליקציה ללא התקנה לשימוש בפלאגין של התכונות הדינמיות. הפלאגין הזה מאפשר גם לפרסם את חוויית השימוש באפליקציה המותקנת ואת חוויית השימוש באפליקציה ללא התקנה מקובץ Android App Bundle אחד. -
R8 מופעל כברירת מחדל: R8 משלב הסרה של סוכר, דחיסה, ערפול, אופטימיזציה והסרה של קוד מיותר (dexing) בשלב אחד, וכתוצאה מכך יש שיפורים בולטים בביצועי ה-build. R8 הוצג בפלאגין Android Gradle 3.3.0, והוא מופעל עכשיו כברירת מחדל גם בפרויקטים של אפליקציות וגם בפרויקטים של ספריות ל-Android באמצעות הפלאגין 3.4.0 ואילך.
בתמונה הבאה מוצגת סקירה כללית ברמה גבוהה של תהליך הידור לפני ההשקה של R8.
עכשיו, ב-R8, תהליכי הסרת הסוכר, הצמצום, הטשטוש, האופטימיזציה וההמרה ל-dex (D8) מתבצעים בשלב אחד, כפי שמתואר בהמשך.
חשוב לזכור ש-R8 תוכנן לפעול עם כללי ProGuard הקיימים שלכם, ולכן סביר להניח שלא תצטרכו לבצע פעולות כלשהן כדי ליהנות מ-R8. עם זאת, זו טכנולוגיה שונה מ-ProGuard ומיועדת במיוחד לפרויקטים של Android, ולכן יכול להיות שהצמצום והאופטימיזציה יגרמו להסרת קוד ש-ProGuard לא הסיר. לכן, במצב הלא סביר הזה, יכול להיות שתצטרכו להוסיף כללים נוספים כדי שהקוד הזה יישאר בפלט ה-build.
אם נתקלתם בבעיות בשימוש ב-R8, תוכלו לקרוא את השאלות הנפוצות בנושא תאימות ל-R8 כדי לבדוק אם יש פתרון לבעיה שלכם. אם הפתרון לא מתועד, תוכלו לדווח על באג.
כדי להשבית את R8, מוסיפים את אחת מהשורות הבאות לקובץ gradle.properties
של הפרויקט:
# Disables R8 for Android Library modules only.
android.enableR8.libraries = false
# Disables R8 for all modules.
android.enableR8 = false
הערה: לסוג build נתון, אם מגדירים את הערך של useProguard
ל-false
בקובץ build.gradle
של מודול האפליקציה, הפלאגין של Android Gradle משתמש ב-R8 כדי לצמצם את הקוד של האפליקציה לסוג ה-build הזה, גם אם משביתים את R8 בקובץ gradle.properties
של הפרויקט.
-
ndkCompile
הוצא משימוש: עכשיו מופיעה שגיאת build אם מנסים להשתמש ב-ndkBuild
כדי לקמפל את הספריות הילידיות. במקום זאת, צריך להשתמש ב-CMake או ב-ndk-build כדי להוסיף קוד C ו-C++ לפרויקט.
בעיות מוכרות
-
בשלב זה אנחנו לא אוכפים את השימוש הנכון בשמות חבילות ייחודיים, אבל נהיה מחמירים יותר בגרסאות מאוחרות יותר של הפלאגין. ב-Android Plugin Gradle בגרסה 3.4.0, אפשר להוסיף את השורה הבאה לקובץ
gradle.properties
כדי לבדוק אם הפרויקט מצהיר על שמות חבילות קבילים.android.uniquePackageNames = true
מידע נוסף על הגדרת שם חבילה באמצעות הפלאגין של Android Gradle זמין במאמר הגדרת מזהה האפליקציה.