Android Gradle Plugin 3.1.0 (מרץ 2018)

כדי להשתמש בגרסה הזו של הפלאגין ל-Android, נדרשים:

גרסת מינימום גרסת ברירת המחדל הערות
Gradle 4.4 4.4 מידע נוסף זמין במאמר עדכון Gradle.
SDK Build Tools 27.0.3 27.0.3 מתקינים או מגדירים את SDK Build Tools. חשוב לזכור: כבר אין צורך לציין גרסה לכלים ל-build באמצעות המאפיין android.buildToolsVersion – הפלאגין משתמש בגרסה המינימלית הנדרשת כברירת מחדל.

D8 – קומפילטור DEX חדש

כברירת מחדל, Android Studio משתמש עכשיו במהדר DEX חדש שנקרא D8. הידור DEX הוא התהליך של המרת קוד בינארי של .class לקוד בינארי של .dex עבור Android Runtime (או Dalvik, לגרסאות ישנות יותר של Android). בהשוואה למהדר הקודם, שנקרא DX, המהדר D8 מקמפל מהר יותר ומפיק קובצי DEX קטנים יותר, תוך שמירה על ביצועים זהים או טובים יותר בסביבת זמן הריצה של האפליקציה.

D8 לא אמור לשנות את תהליך העבודה היומי שלכם לפיתוח אפליקציות. עם זאת, אם נתקלתם בבעיות שקשורות למהדר חדש, תוכלו לדווח על באג. כדי להשבית את D8 באופן זמני ולהשתמש ב-DX, צריך לכלול את הקטע הבא בקובץ gradle.properties של הפרויקט:

      android.enableD8=false
    

בפרויקטים שמשתמשים בתכונות השפה של Java 8, ההסרה המצטברת של סוכר הקוד מופעלת כברירת מחדל. כדי להשבית אותו, צריך לציין את הפרטים הבאים בקובץ gradle.properties של הפרויקט:

      android.enableIncrementalDesugaring=false.
    

משתמשים בגרסה טרום-יצירה: אם אתם כבר משתמשים בגרסה טרום-יצירה של D8, חשוב לדעת שהיא מתבססת עכשיו על ספריות שכלולות בכלים ליצירת חבילות של SDK, ולא על JDK. לכן, אם אתם ניגשים לממשקי API שקיימים ב-JDK אבל לא בספריות של כלי ה-build של ה-SDK, תופיע שגיאת הידור.

שינויים בהתנהגות

  • כשמפתחים כמה חבילות APK שכל אחת מהן מטרגטת ABI שונה, כברירת מחדל ה-build לא יוצר יותר חבילות APK לממשקי ה-ABI הבאים: mips,‏ mips64 ו-armeabi.

    אם רוצים ליצור חבילות APK שמטרגטות את ממשקי ה-ABI האלה, צריך להשתמש ב-NDK r16b או בגרסה ישנה יותר ולציין את ממשקי ה-ABI בקובץ build.gradle, כפי שמתואר בהמשך:

              splits {
                  abi {
                      include 'armeabi', 'mips', 'mips64'
                      ...
                  }
              }
            
              splits {
                  abi {
                      include("armeabi", "mips", "mips64")
                      ...
                  }
              }
            
  • מטמון ה-build של הפלאגין ל-Android מסיר עכשיו רשומות מטמון מלפני יותר מ-30 יום.

  • העברת הערך "auto" אל resConfig לא בוחרת יותר באופן אוטומטי משאבי מחרוזות לחבילה ב-APK. אם תמשיכו להשתמש ב-"auto", הפלאגין יאגד את כל משאבי המחרוזות שהאפליקציה ויחסי התלות שלה מספקים. לכן, במקום זאת צריך לציין כל אזור גיאוגרפי שרוצים שהפלאגין יארוז ב-APK.

  • מאחר שמודולים מקומיים לא יכולים להסתמך על קובץ ה-APK לבדיקה של האפליקציה, הוספת יחסי תלות לבדיקות המכשור באמצעות ההגדרה androidTestApi, במקום androidTestImplementation, גורמת ל-Gradle להציג את האזהרה הבאה:

            WARNING: Configuration 'androidTestApi' is obsolete
            and has been replaced with 'androidTestImplementation'
            
            WARNING: Configuration 'androidTestApi' is obsolete
            and has been replaced with 'androidTestImplementation'
            

תיקונים

  • תוקנה בעיה שבה Android Studio לא מזהה בצורה נכונה יחסי תלות ב-builds מורכבים.
  • תוקנה בעיה שבה מופיעה שגיאה בסנכרון הפרויקט בזמן טעינת הפלאגין של Android כמה פעמים ב-build יחיד. לדוגמה, כשמספר פרויקטים משניים כוללים כל אחד את הפלאגין של Android ב-classpath של buildscript.