פלאגין של Android Gradle 3.4.0 (אפריל 2019)
הגרסה הזו של הפלאגין של Android דורשת את הדברים הבאים:
| גרסת המינימום | גרסת ברירת המחדל | הערות | |
|---|---|---|---|
| Gradle | 5.1.1 | 5.1.1 | מידע נוסף זמין במאמר בנושא עדכון Gradle. כשמשתמשים ב-Gradle מגרסה 5.0 ואילך, גודל ברירת המחדל של ה-heap בזיכרון של ה-daemon של Gradle יורד מ-1GB ל-512MB. זה עלול לגרום לרגרסיה בביצועי ה-build. כדי לשנות את הגדרת ברירת המחדל הזו, צריך לציין את גודל ה-heap של ה-daemon של 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 וכולל תיקוני באגים שונים ושיפורי ביצועים. כדי לראות רשימה של תיקוני באגים חשובים, קראו את הפוסט הרלוונטי ב בלוג של עדכוני הגרסאות.
תכונות חדשות
-
הגדרות חדשות של תלויות לבדיקות Lint: ההתנהגות של
lintChecksהשתנתה, והוספנו הגדרה חדשה של תלויות,lintPublish, כדי לתת לכם יותר שליטה על בדיקות ה-Lint שנארזות בספריות של Android.-
lintChecks: זוהי הגדרה קיימת שבה צריך להשתמש לבדיקות lint שרוצים להריץ רק כשמפתחים את הפרויקט באופן מקומי. אם השתמשתם בעבר בהגדרת התלותlintChecksכדי לכלול בדיקות איתור שגיאות בקובץ ה-AAR שפורסם, אתם צריכים להעביר את יחסי התלות האלה כדי להשתמש בהגדרה החדשהlintPublish. -
lintPublish: משתמשים בהגדרה החדשה הזו בפרויקטים של ספרייה לבדיקות lint שרוצים לכלול ב-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")) }
-
באופן כללי, משימות של אריזה וחתימה אמורות לשפר את מהירות ה-build הכוללת. אם אתם מבחינים ברגרסיה בביצועים שקשורה למשימות האלה, דווחו על באג.
-
שינויים בהתנהגות
-
אזהרה לגבי הוצאה משימוש של הפלאגין של התכונה 'אפליקציות ללא התקנה ל-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, תהליך הסרה של סוכר תחבירי, כיווץ, ערפול קוד, אופטימיזציה ו-dexing (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
הערה: אם מגדירים את useProguard כ-false בקובץ build.gradle של מודול האפליקציה, הפלאגין של Android Gradle משתמש ב-R8 כדי לצמצם את הקוד של האפליקציה לסוג ה-build הזה, גם אם משביתים את R8 בקובץ gradle.properties של הפרויקט.
-
ndkCompileהוצא משימוש: עכשיו תופיע שגיאת build אם תנסו להשתמש ב-ndkBuildכדי לקמפל את ספריות ה-Native. במקום זאת, צריך להשתמש ב-CMake או ב-ndk-build כדי להוסיף קוד C ו-C++ לפרויקט.
בעיות מוכרות
-
כרגע אנחנו לא אוכפים את השימוש הנכון בשמות חבילות ייחודיים, אבל נהיה מחמירים יותר בגרסאות הבאות של הפלאגין. בגרסה 3.4.0 של הפלאגין של Android Gradle, אתם יכולים להוסיף את השורה הבאה לקובץ
gradle.propertiesכדי לבדוק אם הפרויקט שלכם מצהיר על שמות חבילות קבילים.android.uniquePackageNames = trueמידע נוסף על הגדרת שם חבילה באמצעות הפלאגין של Android Gradle זמין במאמר הגדרת מזהה האפליקציה.