פלאגין של Android Gradle 3.4.0 (אפריל 2019)
כדי להשתמש בגרסה הזו של הפלאגין ל-Android, צריך:
| גרסת המינימום | גרסת ברירת המחדל | הערות | |
|---|---|---|---|
| Gradle | 5.1.1 | 5.1.1 | מידע נוסף זמין במאמר בנושא עדכון Gradle. כשמשתמשים ב-Gradle בגרסה 5.0 ומעלה, גודל זיכרון הערימה של דמון Gradle יורד מ-1GB ל-512MB. יכול להיות שהדבר יוביל לרגרסיה בביצועי הבנייה. כדי לשנות את הגדרת ברירת המחדל הזו, מציינים את גודל ה-heap של Gradle daemon בקובץ 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 שרוצים להריץ רק כשמבצעים build של הפרויקט באופן מקומי. אם השתמשתם בעבר בהגדרת התלותlintChecksכדי לכלול בדיקות lint ב-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")) }
-
באופן כללי, אמור להיות שיפור במהירות הבנייה של משימות האריזה והחתימה. אם אתם מבחינים בירידה בביצועים שקשורה למשימות האלה, אתם מוזמנים לדווח על באג.
-
שינויים בהתנהגות
-
אזהרה על הוצאה משימוש של הפלאגין של הפיצ'ר של אפליקציות ללא התקנה ל-Android:אם אתם עדיין משתמשים בפלאגין
com.android.featureכדי לבנות את האפליקציה ללא התקנה, תופיע אזהרה על הוצאה משימוש בפלאגין של Android Gradle בגרסה 3.4.0. כדי לוודא שתוכלו להמשיך ליצור אפליקציה ללא התקנה בגרסאות עתידיות של הפלאגין, צריך להעביר את האפליקציה ללא התקנה לשימוש בפלאגין של תכונה דינמית. הפלאגין הזה מאפשר גם לפרסם את האפליקציה המותקנת ואת האפליקציה ללא התקנה מקובץ Android App Bundle יחיד. -
R8 מופעל כברירת מחדל: R8 משלב את כל השלבים – desugaring, shrinking, obfuscating, optimizing ו-dexing – לשלב אחד. כתוצאה מכך, הביצועים של הגרסה משתפרים באופן משמעותי. R8 הושק ב-Android Gradle plugin 3.3.0 ועכשיו הוא מופעל כברירת מחדל גם בפרויקטים של אפליקציות וגם בפרויקטים של ספריות Android באמצעות פלאגין מגרסה 3.4.0 ואילך.
בתמונה הבאה מוצגת סקירה כללית של תהליך ההידור לפני ההשקה של R8.
עכשיו, עם R8, כל הפעולות האלה – desugaring, shrinking, obfuscating, optimizing ו-dexing (D8) – מתבצעות בשלב אחד, כמו שמוצג בהמשך.
חשוב לזכור: R8 נועד לפעול עם כללי ProGuard הקיימים, כך שכנראה לא תצטרכו לבצע פעולות כלשהן כדי ליהנות מהיתרונות של R8. עם זאת, הטכנולוגיה שונה מ-ProGuard והיא מיועדת במיוחד לפרויקטים של Android. לכן, יכול להיות שהכיווץ והאופטימיזציה יגרמו להסרת קוד שלא היה מוסר על ידי ProGuard. לכן, במצב הלא סביר הזה, יכול להיות שתצטרכו להוסיף כללים נוספים כדי שהקוד הזה יישאר בפלט של הבנייה.
אם נתקלתם בבעיות בשימוש ב-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: עכשיו מוצגת שגיאת בנייה אם מנסים להשתמש ב-ndkBuildכדי לקמפל את הספריות המקוריות. במקום זאת, צריך להשתמש ב-CMake או ב-ndk-build כדי להוסיף קוד C ו-C++ לפרויקט.
בעיות מוכרות
-
בשלב הזה, לא נאכף שימוש נכון בשמות חבילות ייחודיים, אבל בגרסאות מאוחרות יותר של הפלאגין תהיה הקפדה רבה יותר על כך. בפלאגין Android Gradle בגרסה 3.4.0, אפשר להוסיף את השורה הבאה לקובץ
gradle.propertiesכדי להפעיל את האפשרות לבדוק אם הפרויקט כולל שמות חבילות קבילים.android.uniquePackageNames = trueמידע נוסף על הגדרת שם חבילה באמצעות הפלאגין של Android Gradle זמין במאמר בנושא הגדרת מזהה האפליקציה.