פלאגין של Android Gradle 2.2.0 (ספטמבר 2016)
- תלויות:
- הפרטים החדשים:
-
- משתמש ב-Gradle 2.14.1, שכולל שיפורים בביצועים ותכונות חדשות, ומתקן פגיעות באבטחה שמאפשרת העלאת הרשאות מקומיות כשמשתמשים ב-Gradle daemon. פרטים נוספים זמינים ב הערות המוצר של Gradle.
- באמצעות
externalNativeBuild {}DSL, Gradle מאפשר עכשיו לקשר למקורות C/C++ ולבצע קומפילציה של ספריות C/C++ באמצעות CMake או ndk-build. אחרי שיוצרים את ספריות C/C++, Gradle אורז אותן ב-APK. מידע נוסף על שימוש ב-CMake וב-ndk-build עם Gradle זמין במאמר בנושא הוספת קוד C ו-C++ לפרויקט. - כשמריצים build משורת הפקודה, Gradle מנסה עכשיו להוריד באופן אוטומטי רכיבי SDK חסרים או עדכונים שהפרויקט תלוי בהם. מידע נוסף זמין במאמר בנושא הורדה אוטומטית של חבילות חסרות באמצעות Gradle.
- תכונה חדשה של שמירת נתונים במטמון (קאשינג) מאפשרת ל-Gradle להאיץ את זמני הבנייה באמצעות pre-dexing, אחסון ושימוש חוזר בגרסאות pre-dexed של הספריות. במדריך בנושא 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. השימוש ב-DSL הזה שונה מהשימוש ב-buildTypes.proguardFiles, שכולל כללים כלליים של ProGuard לאפליקציה ולא מציין מחלקות לקובץ ה-DEX הראשי. - נוסף תמיכה בדגל
android:extractNativeLibs, שיכול לצמצם את גודל האפליקציה כשמתקינים אותה במכשיר. כשמגדירים את הדגל הזה לערךfalseבאלמנט<application>בקובץ מניפסט של האפליקציה, Gradle אורז גרסאות לא דחוסות ומיושרות של ספריות C/C++ עם ה-APK. הפעולה הזו מונעת מ-PackageManagerלהעתיק את ספריות C/C++ מקובץ ה-APK למערכת הקבצים של המכשיר במהלך ההתקנה, ויש לה גם יתרון נוסף: היא מקטינה את גודל העדכונים של האפליקציה. - עכשיו אפשר לציין
versionNameSuffixוapplicationIdSuffixלטעמים של מוצרים. (בעיה מספר 59614)
- השינויים:
-
-
getDefaultProguardFileמחזירה עכשיו את קובצי ברירת המחדל של ProGuard שפלאגין Android ל-Gradle מספק, ולא משתמשת יותר בקובצי ProGuard ב-Android SDK. - שיפורים בביצועים ובתכונות של מהדר Jack:
- הכלי Jack תומך עכשיו בכיסוי בדיקות של Jacoco כשמגדירים את
testCoverageEnabledל-true. - תמיכה משופרת במעבדי הערות. מעבדי הערות (Annotation) בנתיב המחלקות (classpath), כמו תלויות
compile, מוחלים אוטומטית על הבנייה. אתם יכולים גם לציין מעבד אנוטציות (Annotation processor) ב-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. כדי לשנות את גודל ה-heap של הדמון, מוסיפים את השורה הבאה לקובץ
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. |