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.
  • באמצעות ה-DSL של externalNativeBuild {}, עכשיו אפשר לקשר ב-Gradle למקורות המקומיים ולקמפל ספריות מקומיות באמצעות CMake או ndk-build. אחרי היצירה של הספריות המקומיות, Gradle מקפל אותן בתוך קובץ ה-APK. מידע נוסף על השימוש ב-CMake וב-ndk-build עם Gradle זמין במאמר הוספת קוד C ו-C++ לפרויקט.
  • כשמריצים build משורת הפקודה, Gradle מנסה עכשיו להוריד באופן אוטומטי עדכונים או רכיבי SDK חסרים שהפרויקט שלכם תלוי בהם. מידע נוסף זמין במאמר הורדה אוטומטית של חבילות חסרות באמצעות Gradle.
  • תכונה ניסיונית חדשה של שמירת נתונים במטמון מאפשרת ל-Gradle לקצר את זמני ה-build על ידי ביצוע דקס מראש, אחסון של הגרסאות שעבר דקס מראש של הספריות ושימוש חוזר בהן. למידע נוסף על השימוש בתכונה הניסיונית הזו, תוכלו לקרוא את המדריך יצירת מטמון.
  • שיפור ביצועי ה-build באמצעות צינור עיבוד נתונים חדש של ברירת המחדל לחבילות, שמטפל בקריפטוגרפיה, בחתימה ובהתאמת zip במשימה אחת. כדי לחזור לשימוש בכלי האריזה הקודמים, צריך להוסיף את 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 ברמת המודול:

    Groovy

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

    Kotlin

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

      Groovy

      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:

      Groovy

      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
      

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

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