‫Android Gradle Plugin 2.2.0 (ספטמבר 2016)

תלויות:
גרסת מינימום גרסת ברירת המחדל הערות
Gradle 2.14.1 2.14.1 מידע נוסף זמין במאמר בנושא עדכון Gradle.
SDK Build Tools 23.0.2 23.0.2 מתקינים או מגדירים SDK Build Tools.
המינוי החדש:
  • הגרסה הזו משתמשת ב-Gradle 2.14.1, שכוללת שיפורים בביצועים ותכונות חדשות, ומתקנת פגיעות באבטחה שמאפשרת העלאת הרשאות מקומיות כשמשתמשים ב-Gradle daemon. פרטים נוספים זמינים ב הערות המוצר של Gradle.
  • באמצעות externalNativeBuild {} DSL, ‏ Gradle מאפשר עכשיו לקשר למקורות המקוריים ולבצע קומפילציה של ספריות מקוריות באמצעות CMake או ndk-build. אחרי שיוצרים את הספריות המקוריות, Gradle אורז אותן ב-APK. מידע נוסף על שימוש ב-CMake וב-ndk-build עם Gradle זמין במאמר הוספת קוד C ו-C++ לפרויקט.
  • כשמריצים בנייה משורת הפקודה, Gradle מנסה עכשיו להוריד אוטומטית רכיבי SDK חסרים או עדכונים שהפרויקט תלוי בהם. מידע נוסף על הורדה אוטומטית של חבילות חסרות באמצעות Gradle
  • תכונה ניסיונית חדשה של שמירת נתונים במטמון מאפשרת ל-Gradle להאיץ את זמני הבנייה באמצעות dexing מראש, אחסון ושימוש חוזר בגרסאות של הספריות שלכם שעברו dexing מראש. במדריך בנושא Build Cache מפורט מידע נוסף על השימוש בתכונה הניסיונית הזו.
  • שיפור הביצועים של תהליך הבנייה באמצעות צינור אריזה חדש שמוגדר כברירת מחדל, שמטפל בדחיסה, בחתימה וביישור זיפ במשימה אחת. אפשר לחזור לשימוש בכלים הישנים יותר לאריזה על ידי הוספת android.useOldPackaging=true לקובץ gradle.properties. כשמשתמשים בכלי האריזה החדש, המשימה zipalignDebug לא זמינה. עם זאת, אפשר ליצור כזה בעצמכם באמצעות הפעלת השיטה createZipAlignTask(String taskName, File inputFile, File outputFile).
  • חתימת ה-APK מתבצעת עכשיו באמצעות APK Signature Scheme v2 בנוסף לחתימת JAR רגילה. כל פלטפורמות Android מקבלות את קובצי ה-APK שנוצרים. כל שינוי בקובצי ה-APK האלה אחרי החתימה מבטל את החתימות שלהם בגרסה 2 ומונע את ההתקנה במכשיר. כדי להשבית את התכונה הזו, מוסיפים את השורה הבאה לקובץ build.gradle ברמת המודול:

    מגניב

    android {
      ...
      signingConfigs {
        config {
          ...
          v2SigningEnabled false
        }
      }
    }
          

    Kotlin

    android {
      ...
      signingConfigs {
        create("config") {
          ...
          v2SigningEnabled = false
        }
      }
    }
          
  • בגרסאות build של multidex, אפשר עכשיו להשתמש בכללי ProGuard כדי לקבוע אילו מחלקות Gradle צריך לקמפל לקובץ ה-DEX הראשי של האפליקציה. מערכת Android טוענת קודם את קובץ ה-DEX הראשי כשמפעילים את האפליקציה, ולכן אפשר לתת עדיפות למחלקות מסוימות בהפעלה על ידי קומפילציה שלהן לקובץ ה-DEX הראשי. אחרי שיוצרים קובץ הגדרות של ProGuard במיוחד בשביל קובץ ה-DEX הראשי, מעבירים את הנתיב של קובץ ההגדרות אל Gradle באמצעות buildTypes.multiDexKeepProguard. השימוש בשפת התחום הספציפית הזו שונה מהשימוש ב- buildTypes.proguardFiles, שכוללת כללי ProGuard כלליים לאפליקציה ולא מציינת מחלקות לקובץ ה-DEX הראשי.
  • נוסף תמיכה בדגל android:extractNativeLibs, שיכול לצמצם את גודל האפליקציה כשמתקינים אותה במכשיר. כשמגדירים את הדגל הזה לערך false באלמנט <application> של קובץ המניפסט של האפליקציה, Gradle אורז גרסאות לא דחוסות ומיושרות של ספריות Native עם ה-APK. כך PackageManager לא מעתיק את הספריות המקוריות מקובץ ה-APK למערכת הקבצים של המכשיר במהלך ההתקנה, וגם גודל העדכונים של האפליקציה קטן יותר.
  • עכשיו אפשר לציין versionNameSuffix ו- applicationIdSuffix לטעמים של מוצרים. (בעיה מספר 59614)
שינויים:
  • getDefaultProguardFile מחזירה עכשיו את קובצי ברירת המחדל של ProGuard שפלאגין Android ל-Gradle מספק, ולא משתמשת יותר בקובצים שנמצאים ב-Android SDK.
  • שיפורים בביצועים ובתכונות של מהדר Jack:
    • ‫Jack תומך עכשיו בכיסוי בדיקות של Jacoco כשמגדירים את testCoverageEnabled ל-true.
    • תמיכה משופרת במעבדי הערות. מעבדי הערות (annotation) בנתיב המחלקה (classpath), כמו תלות (dependencies) של compile, מוחלים אוטומטית על הבנייה. אפשר גם לציין מעבד הערות ב-build ולהעביר ארגומנטים באמצעות ה-DSL‏ javaCompileOptions.annotationProcessorOptions {} בקובץ build.gradle ברמת המודול:

      מגניב

      android {
        ...
        defaultConfig {
          ...
          javaCompileOptions {
            annotationProcessorOptions {
              className 'com.example.MyProcessor'
              // Arguments are optional.
              arguments = [ foo : 'bar' ]
            }
          }
        }
      }
          

      Kotlin

      android {
        ...
        defaultConfig {
          ...
          javaCompileOptions {
            annotationProcessorOptions {
              className = "com.example.MyProcessor"
              // Arguments are optional.
              arguments(mapOf(foo to "bar"))
            }
          }
        }
      }
          

      אם רוצים להחיל מעבד הערות בזמן ההידור, אבל לא לכלול אותו בחבילת ה-APK, צריך להשתמש בannotationProcessor היקף התלות:

      מגניב

      dependencies {
          compile 'com.google.dagger:dagger:2.0'
          annotationProcessor 'com.google.dagger:dagger-compiler:2.0'
         // or use buildVariantAnnotationProcessor to target a specific build variant
      }
          

      Kotlin

      dependencies {
          implementation("com.google.dagger:dagger:2.0")
          annotationProcessor("com.google.dagger:dagger-compiler:2.0")
         // or use buildVariantAnnotationProcessor to target a specific build variant
      }
          
    • כדי לראות רשימה של הפרמטרים שאפשר להגדיר, מריצים את הפקודה הבאה משורת הפקודה:

      java -jar /build-tools/jack.jar --help-properties
      

    • כברירת מחדל, אם גודל ה-heap של Gradle daemon הוא לפחות 1.5GB, ‏ Jack פועל עכשיו באותו תהליך כמו Gradle. כדי לשנות את גודל הערימה של ה-daemon, מוסיפים את השורה הבאה לקובץ gradle.properties:

      # This sets the daemon heap size to 1.5GB.
      org.gradle.jvmargs=-Xmx1536M