ปลั๊กอิน 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 เวอร์ชันนี้มีฟีเจอร์ใหม่ต่อไปนี้
ภาษา Java เวอร์ชัน 8 โดยค่าเริ่มต้น
ตั้งแต่เวอร์ชัน 4.2 เป็นต้นไป AGP จะใช้ระดับภาษาของ Java 8 โดยค่าเริ่มต้น Java 8 ให้คุณเข้าถึงฟีเจอร์ใหม่ๆ มากมายทางภาษา รวมถึง lambda นิพจน์ การอ้างอิงเมธอด และวิธีอินเทอร์เฟซแบบคงที่ ดูรายการฟีเจอร์ทั้งหมดที่รองรับได้ในเอกสารประกอบ 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 ใหม่ในปลั๊กอิน Android Gradle 4.2 เข้ามาแทนที่ส่วนต่างๆ ของคอมไพเลอร์ทรัพยากร AAPT2 เพื่อปรับปรุงประสิทธิภาพในการสร้างสรรค์ โดยเฉพาะในเครื่อง Windows JVM ใหม่ ระบบจะเปิดใช้คอมไพเลอร์ทรัพยากรโดยค่าเริ่มต้น
รองรับการรับรองเวอร์ชัน 3 และ v4 แล้ว
ตอนนี้ปลั๊กอิน Android Gradle 4.2 รองรับรูปแบบการรับรองของ APK v3 และ APK v4 แล้ว
หากต้องการเปิดใช้รูปแบบใดรูปแบบหนึ่งหรือทั้ง 2 รูปแบบต่อไปนี้ใน
สร้าง ให้เพิ่มพร็อพเพอร์ตี้ต่อไปนี้ลงใน 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 ขนาดใหญ่ใช้งานได้อย่างรวดเร็วโดยใช้การติดตั้ง APK แบบเพิ่มทีละรายการของ ADB ใน Android 11 แฟล็กใหม่นี้ใช้สำหรับขั้นตอนการลงนาม APK ในการทำให้ใช้งานได้ ขั้นตอนได้
กำหนดค่า App Signing ในแต่ละตัวแปร
ตอนนี้คุณจะเปิดหรือปิดใช้ App Signing ใน Android Gradle ได้ ต่อตัวแปรเท่านั้น
ตัวอย่างนี้แสดงวิธีตั้งค่า App Signing ตามตัวแปรโดยใช้
onVariants()
ใน Kotlin หรือ Groovy
androidComponents {
onVariants(selector().withName("fooDebug"), {
signingConfig.enableV1Signing.set(false)
signingConfig.enableV2Signing.set(true)
})
พร็อพเพอร์ตี้ Gradle ใหม่:
android.native.buildOutput
AGP 4.2 จะกรองข้อความเพื่อลดความยุ่งเหยิงในเอาต์พุตบิลด์
จากบิลด์ดั้งเดิมที่ใช้ CMake และ ndk-build
ซึ่งแสดงเฉพาะเอาต์พุตของคอมไพเลอร์ C/C++ โดยค่าเริ่มต้น ก่อนหน้านี้ เอาต์พุตหนึ่งบรรทัด
สำหรับทุกไฟล์ที่สร้างขึ้น ส่งผลให้ข้อมูลจำนวนมาก
ที่ให้ข้อมูล
หากต้องการดูเอาต์พุตเนทีฟทั้งหมด ให้ตั้งค่าพร็อพเพอร์ตี้ 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
ไฟล์ในโปรเจ็กต์ย่อยแทนที่จะเป็นรูท
ระบบจะไม่สนใจโปรเจ็กต์ดังกล่าว
ตัวอย่างเช่น ในรุ่นก่อนหน้า 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 เครื่องมือสร้าง 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 ใช้งาน Gradle 4.8.1 ขึ้นไป ดูข้อมูลเพิ่มเติมเกี่ยวกับความเข้ากันได้ของ Gradle ได้ที่อัปเดต Gradle
การเพิ่มประสิทธิภาพบิลด์ Gradle สำหรับ JDK 11
การอัปเดต JDK 11 นี้ส่งผลต่อการกำหนดค่าเริ่มต้นของโปรแกรมรวบรวมขยะ JVM เนื่องจาก JDK 8 ใช้โปรแกรมรวบรวมขยะแบบขนาน ส่วน JDK 11 ใช้โปรแกรมรวบรวมขยะ G1
เราขอแนะนำเพื่อเพิ่มโอกาสในการปรับปรุงประสิทธิภาพของบิลด์
ทดสอบบิลด์ของ Gradle
เครื่องมือเก็บขยะแบบขนานกัน ใน gradle.properties
ให้ตั้งค่าต่อไปนี้
org.gradle.jvmargs=-XX:+UseParallelGC
หากมีตัวเลือกอื่นๆ ตั้งค่าไว้ในช่องนี้แล้ว ให้เพิ่มตัวเลือกใหม่โดยทำดังนี้
org.gradle.jvmargs=-Xmx1536m -XX:+UseParallelGC
หากต้องการวัดความเร็วในการสร้างด้วยการกำหนดค่าต่างๆ โปรดดูโปรไฟล์การสร้าง
ไฟล์ 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
}
}
}
Flag useLegacyPackaging
จะแทนที่แอตทริบิวต์ไฟล์ Manifest extractNativeLibs
หากต้องการทราบข้อมูลพื้นฐานเพิ่มเติม โปรดดูบันทึกประจำรุ่น
แพ็กเกจไลบรารีเนทีฟที่ไม่ได้บีบอัดโดยค่าเริ่มต้น