פלאגין Android Gradle 3.1.0 (מרץ 2018)

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

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

מהדר DEX חדש, D8

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

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

      android.enableD8=false
    

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

      android.enableIncrementalDesugaring=false.
    

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

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

  • כשיוצרים כמה חבילות 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")
                      ...
                  }
              }
            
  • 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 לא מזהה כראוי ותלויות בגרסאות build מורכבות.
  • תיקון בעיה שבה מתקבלת שגיאת סנכרון של פרויקט בטעינה של הפלאגין של Android כמה פעמים ב-build אחד. לדוגמה, כשכמה פעמים כל אחד מפרויקטים המשנה כולל את הפלאגין של Android ב-buildscript שלהם נתיב הכיתה.