Android Gradle Plugin 2.2.0 (ספטמבר 2016)
- תלויות:
- המינוי החדש:
-
- הגרסה הזו משתמשת ב-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 ולהעביר ארגומנטים באמצעות ה-DSLjavaCompileOptions.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 }
- כברירת מחדל, אם גודל ה-heap של Gradle daemon הוא לפחות 1.5GB, Jack פועל עכשיו באותו תהליך כמו Gradle. כדי לשנות את גודל הערימה של ה-daemon, מוסיפים את השורה הבאה לקובץ
gradle.properties
:# This sets the daemon heap size to 1.5GB. org.gradle.jvmargs=-Xmx1536M
כדי לראות רשימה של הפרמטרים שאפשר להגדיר, מריצים את הפקודה הבאה משורת הפקודה:
java -jar /build-tools/jack.jar --help-properties
- Jack תומך עכשיו בכיסוי בדיקות של Jacoco כשמגדירים את
-
גרסת מינימום | גרסת ברירת המחדל | הערות | |
---|---|---|---|
Gradle | 2.14.1 | 2.14.1 | מידע נוסף זמין במאמר בנושא עדכון Gradle. |
SDK Build Tools | 23.0.2 | 23.0.2 | מתקינים או מגדירים SDK Build Tools. |