פלאגין Android Gradle 4.2.0 (מרץ 2021)
תאימות
גרסת המינימום | גרסת ברירת המחדל | הערות | |
---|---|---|---|
Gradle | 6.7.1 | לא רלוונטי | מידע נוסף על עדכון Gradle |
כלים לבניית SDK | 30.0.2 | 30.0.2 | התקנה או הגדרה של כלים לבניית SDK. |
NDK | לא רלוונטי | 21.4.7075529 | מתקינים או מגדירים גרסה אחרת של ה-NDK. |
תכונות חדשות
הגרסה הזו של הפלאגין Android Gradle כוללת את התכונות החדשות הבאות.
גרסה 8 של שפת Java כברירת מחדל
החל מגרסה 4.2, מערכת AGP תשתמש ברמת השפה Java 8 כברירת מחדל. Java 8 מספק גישה למספר תכונות שפה חדשות יותר, כולל lambda ביטויים, הפניות לשיטות ו-methods בממשק סטטי. לרשימה המלאה של התכונות הנתמכות, עיין במסמכי התיעוד של Java 8.
כדי לשמור את ההתנהגות הישנה, ציין Java 7 באופן מפורש ברמת המודול
קובץ build.gradle.kts
או build.gradle
:
// build.gradle
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
// For Kotlin projects, compile to Java 6 instead of 7
kotlinOptions {
jvmTarget = "1.6"
}
}
// build.gradle.kts
android {
...
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
}
// For Kotlin projects, compile to Java 6 instead of 7
kotlinOptions {
jvmTarget = "1.6"
}
}
מהדר משאבי JVM חדש
מהדר משאבי JVM חדש בכלי 4.2 של Android Gradle מחליף חלקים של מהדר המשאבים של AAPT2, לשיפור ביצועי ה-build, במיוחד במחשבים עם Windows. ה-JVM החדש מהדר המשאבים מופעל כברירת מחדל.
התמיכה בחתימות v3 ו-v4 נתמכת עכשיו
הפלאגין Android Gradle 4.2 תומך עכשיו ב-APK v3
ו-APK v4 לחתימה.
כדי להפעיל אחד מהפורמטים האלה או את שניהם,
build, הוספת המאפיינים הבאים ל-build.gradle
ברמת המודול
או קובץ build.gradle.kts
:
// build.gradle
android {
...
signingConfigs {
config {
...
enableV3Signing true
enableV4Signing true
}
}
}
// build.gradle.kts
android {
...
signingConfigs {
config {
...
enableV3Signing = true
enableV4Signing = true
}
}
}
חתימת APK v4 מאפשרת לפרוס במהירות חבילות APK גדולות באמצעות ADB התקנת APK מצטברת ב- Android 11. הדגל החדש הזה מטפל בשלב חתימת ה-APK בפריסה תהליך האימות.
הגדרה של חתימת אפליקציה לכל וריאנט
עכשיו אפשר להפעיל או להשבית חתימת אפליקציות ב-Android Gradle לכל וריאנט.
הדוגמה הזו ממחישה איך להגדיר חתימת אפליקציה לכל וריאנט באמצעות
onVariants()
ב-Kotlin או ב-Groovy:
androidComponents {
onVariants(selector().withName("fooDebug"), {
signingConfig.enableV1Signing.set(false)
signingConfig.enableV2Signing.set(true)
})
מאפיין חדש של Gradle:
android.native.buildOutput
כדי לצמצם עומס בפלט ה-build, הודעות יישלחו באמצעות AGP 4.2
מגרסאות build מותאמות שמשתמשות ב-CMake וב-ndk-build
,
מציגה רק פלט מהדר (compiler) C/C++ כברירת מחדל. בעבר, שורת פלט
נוצר לכל קובץ שנוצר, והתוצאה הייתה כמות גדולה של
הודעות אינפורמטיביות.
אם רוצים לראות את כל פלט ה-Native, מגדירים את ה-
נכס Gradle של android.native.buildOutput
עד verbose
.
אפשר להגדיר את המאפיין הזה בקובץ gradle.properties
או דרך
בשורת הפקודה.
gradle.properties
android.native.buildOutput=verbose
שורת הפקודה
-Pandroid.native.buildOutput=verbose
ערך ברירת המחדל של הנכס הזה הוא quiet
.
שינוי בהתנהגות של קובצי gradle.properties
החל מ-AGP 4.2, כבר אי אפשר לעקוף את המאפיינים של Gradle
מתת-פרויקטים. במילים אחרות, אם אתם מצהירים על נכס
הקובץ gradle.properties
נמצא בתת-פרויקט במקום ברמה הבסיסית (root)
המערכת תתעלם ממנו.
לדוגמה, בגרסאות קודמות, AGP יקרא ערכים מ-
<var>projectDir</var>/gradle.properties
,
<var>projectDir</var>/app/gradle.properties
,
<var>projectDir</var>/library/gradle.properties
,
וכו' למודולים של אפליקציות, אם אותו מאפיין Gradle קיים
<var>projectDir</var>/gradle.properties
וגם
<var>projectDir</var>/app/gradle.properties
,
הערך מ-
<var>projectDir</var>/app/gradle.properties
תקבל עדיפות.
ב-AGP 4.2, ההתנהגות הזו השתנתה, ו-AGP לא יטען ערכים מ-
gradle.properties
בפרויקטים משניים (למשל,
<var>projectDir</var>/app/gradle.properties
).
השינוי הזה משקף את
התנהגות חדשה של Gradle ותמיכה
שמירת הגדרות במטמון
למידע נוסף על הגדרת ערכים ב-gradle.properties
קבצים, אפשר לעיין
מסמכי Gradle.
תאימות של Gradle ושינויים בהגדרות
כשעובדים ב-Android Studio, כלי ה-build של Gradle משתמש בחבילת JDK בחבילה של Studio. בגרסאות הקודמות, JDK 8 נכלל בחבילה עם Studio. בסעיף 4.2, עם זאת, JDK 11 כבר נכלל בחבילה. כשמשתמשים ב-JDK החדש בחבילה כדי להריץ Gradle, הדבר עלול לגרום לאי-תאימות או להשפיע על ביצועי ה-JVM בגלל שינויים באוסף האשפה. בהמשך מתוארות הבעיות האלה.
הערה: אנחנו ממליצים להפעיל את Gradle עם JDK 11, שאפשר לשנות את ה-JDK שמשמש להפעלת Gradle מבנה הפרויקט שינוי ההגדרה הזו ישנה רק את ה-JDK שמשמש להפעלת Gradle. לא תשנה את ה-JDK שמשמש להפעלת Studio עצמו.
תאימות ל-Studio ל-Android פלאגין של Gradle (AGP)
מערכת Android Studio 4.2 יכולה לפתוח פרויקטים שמשתמשים ב-AGP 3.1 ובגרסה בתנאי שב-AGP פועלת גרסה 4.8.1 ואילך של Gradle. לקבלת מידע נוסף מידע על תאימות Gradle, לעדכון Gradle
אופטימיזציה של גרסאות build של Gradle ל-JDK 11
העדכון הזה ל-JDK 11 משפיע על הגדרות ברירת המחדל של אשפה של JVM מכיוון שמכשיר JDK 8 משתמש בסלקן אשפה מקביל, ו-JDK 11 משתמש את אוסף אשפה של G1.
כדי לשפר את הביצועים של ה-build, אנחנו ממליצים
לבדוק את גרסאות ה-build של Gradle באמצעות
לפח אשפה מקביל. ב-gradle.properties
, מגדירים את הדברים הבאים:
org.gradle.jvmargs=-XX:+UseParallelGC
אם כבר הוגדרו אפשרויות אחרות בשדה הזה, מוסיפים אפשרות חדשה:
org.gradle.jvmargs=-Xmx1536m -XX:+UseParallelGC
כדי למדוד את מהירות ה-build בהגדרות שונות: יצירת פרופיל ה-build.
קובצי DEX לא דחוסים ב-APK כאשר minSdk
= 28 ומעלה
ברירת המחדל של AGP היא חבילה של קובצי DEX לא דחוסים ב-APK כאשר minSdk
= 28 או
גבוהה יותר. פעולה זו גורמת להגדלת גודל ה-APK, אך היא מובילה לירידה קטנה יותר
גודל ההתקנה במכשיר, וגודל ההורדה זהה פחות או יותר.
כדי לאלץ את AGP לארוז את קובצי ה-DEX דחוסים, אפשר להוסיף את
הבאים לקובץ build.gradle
:
android {
packagingOptions {
dex {
useLegacyPackaging true
}
}
}
שימוש ב-DSL כדי לארוז ספריות נייטיב דחוסות
אנחנו ממליצים לארוז ספריות נייטיב לא דחוסות, כי
גודל ההתקנה של האפליקציה קטן יותר, גודל ההורדה של האפליקציה קטן יותר והאפליקציה מהירה יותר
זמן הטעינה של המשתמשים. עם זאת, אם רוצים שהפלאגין של Android Gradle
לארוז ספריות מקוריות דחוסות בעת בניית האפליקציה, להגדיר
useLegacyPackaging
אל true
בקובץ build.gradle
של האפליקציה:
android {
packagingOptions {
jniLibs {
useLegacyPackaging true
}
}
}
הדגל useLegacyPackaging
מחליף את מאפיין המניפסט extractNativeLibs
. כדי לקבל עוד רקע, אפשר לעיין בנתוני הגרסה
ספריות מקוריות נארזות באופן לא דחוס כברירת מחדל.