פלאגין של Android Gradle‏ 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.
    

משתמשי גרסת Preview: אם אתם כבר משתמשים בגרסת Preview של D8, שימו לב שהיא עכשיו עוברת קומפילציה מול ספריות שכלולות בכלי ה-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 בנתיב המחלקות של סקריפט הבנייה שלהם.