‫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. חשוב לזכור: כבר לא צריך לציין גרסה לכלי הבנייה באמצעות המאפיין android.buildToolsVersion – הפלאגין משתמש בגרסה המינימלית הנדרשת כברירת מחדל.

מהדר DEX חדש, ‏ D8

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

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

      android.enableD8=false
    

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

      android.enableIncrementalDesugaring=false.
    

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

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

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

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

              splits {
                  abi {
                      include 'armeabi', 'mips', 'mips64'
                      ...
                  }
              }
            
              splits {
                  abi {
                      include("armeabi", "mips", "mips64")
                      ...
                  }
              }
            
  • התוסף ל-Android‏ build cache מפנה עכשיו מהמטמון רשומות שגילן יותר מ-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 לא מזהה כראוי תלויות ב-composite builds.
  • תוקנה בעיה שבה מוצגת שגיאה בסנכרון הפרויקט כשמטעינים את הפלאגין של Android כמה פעמים בגרסה אחת – למשל, כשכמה פרויקטים משניים כוללים כל אחד את הפלאגין של Android בנתיב המחלקה של סקריפט הבנייה שלהם.