‫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 האלה אחרי החתימה מבטל את תוקף החתימות מסוג v2 ומונע את ההתקנה במכשיר. כדי להשבית את התכונה הזו, מוסיפים את השורה הבאה לקובץ build.gradle ברמת המודול:

    Groovy

    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. השימוש ב-DSL הזה שונה מהשימוש ב- 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 ברמת המודול:

      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
      

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

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