ปลั๊กอิน Android Gradle 4.2.0 (มีนาคม 2021)
ความเข้ากันได้
เวอร์ชันต่ำสุด | เวอร์ชันเริ่มต้น | หมายเหตุ | |
---|---|---|---|
แกรเดิล | 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 ขนาดใหญ่ใช้งานได้อย่างรวดเร็วโดยใช้ ADB การติดตั้ง APK ที่เพิ่มขึ้นใน 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 เดียวกันในทั้ง 2 แบบ
<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 Garbage เนื่องจาก 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
}
}
}
แฟล็ก useLegacyPackaging
แทนที่แอตทริบิวต์ไฟล์ Manifest extractNativeLibs
หากต้องการทราบข้อมูลพื้นฐานเพิ่มเติม โปรดดูบันทึกประจำรุ่น
แพ็กเกจไลบรารีเนทีฟที่ไม่ได้บีบอัดโดยค่าเริ่มต้น