ปลั๊กอิน Android Gradle 3.3.0 (มกราคม 2019)
ปลั๊กอิน Android เวอร์ชันนี้ต้องการสิ่งต่อไปนี้
เวอร์ชันต่ำสุด | เวอร์ชันเริ่มต้น | หมายเหตุ | |
---|---|---|---|
Gradle | 4.10.1 | 4.10.1 | ดูข้อมูลเพิ่มเติมได้ที่การอัปเดต Gradle เมื่อใช้ Gradle 5.0 ขึ้นไป ขนาดกองหน่วยความจำของเดรัม Gradle เริ่มต้นจะลดลงจาก 1 GB เป็น 512 MB ซึ่งอาจส่งผลให้ประสิทธิภาพของบิลด์ถดถอย หากต้องการลบล้างการตั้งค่าเริ่มต้นนี้ ให้ระบุขนาดฮีปของ Daemon ของ Gradle ในไฟล์ gradle.properties ของโปรเจ็กต์ |
เครื่องมือสร้าง SDK | 28.0.3 | 28.0.3 | ติดตั้งหรือกําหนดค่าเครื่องมือสร้าง SDK |
การอัปเดตเล็กน้อยนี้รองรับความเข้ากันได้กับการตั้งค่าเริ่มต้นและฟีเจอร์ใหม่สำหรับ ระดับการเข้าถึงแพ็กเกจใน Android 11
ดูรายละเอียดได้ที่บันทึกประจำรุ่น 4.0.1
3.3.2 (มีนาคม 2019)
การอัปเดตเล็กน้อยนี้รองรับ Android Studio 3.3.2 รวมถึงมีการแก้ไขข้อบกพร่องและการปรับปรุงประสิทธิภาพต่างๆ หากต้องการดูรายการข้อบกพร่องที่ควรทราบ โปรดอ่านโพสต์ที่เกี่ยวข้องใน บล็อกการอัปเดตรุ่น
3.3.1 (กุมภาพันธ์ 2019)
การอัปเดตเล็กน้อยนี้รองรับ Android Studio 3.3.1 และรวมการแก้ไขข้อบกพร่องและการปรับปรุงประสิทธิภาพหลายรายการ
ฟีเจอร์ใหม่
-
การซิงค์ classpath ที่ปรับปรุงแล้ว: เมื่อแก้ไขการอ้างอิงในรันไทม์และ classpath ขณะคอมไพล์ ปลั๊กอิน Gradle ของ Android จะพยายามแก้ไขข้อขัดแย้งของเวอร์ชันดาวน์สตรีมบางอย่างสำหรับทรัพยากร Dependency ที่ปรากฏใน classpath หลายรายการ
ตัวอย่างเช่น หาก classpath รันไทม์มีไลบรารี ก เวอร์ชัน 2.0 และ classpath การคอมไพล์มีไลบรารี ก เวอร์ชัน 1.0 ปลั๊กอินจะอัปเดตทรัพยากร Dependency ใน classpath การคอมไพล์เป็นไลบรารี ก เวอร์ชัน 2.0 โดยอัตโนมัติเพื่อหลีกเลี่ยงข้อผิดพลาด
อย่างไรก็ตาม หาก classpath รันไทม์มีไลบรารี ก เวอร์ชัน 1.0 และคอมไพล์มีไลบรารี ก เวอร์ชัน 2.0 ปลั๊กอินจะไม่ดาวน์เกรดทรัพยากร Dependency ใน classpath คอมไพล์เป็นไลบรารี ก เวอร์ชัน 1.0 และคุณจะได้รับข้อผิดพลาด ดูข้อมูลเพิ่มเติมได้ที่แก้ไขความขัดแย้งระหว่างเส้นทางของชั้นเรียน
-
การคอมไพล์ Java แบบเพิ่มประสิทธิภาพเมื่อใช้โปรแกรมประมวลผลคำอธิบายประกอบ: การอัปเดตนี้ช่วยลดเวลาในการสร้างโดยปรับปรุงการรองรับการคอมไพล์ Java แบบเพิ่มประสิทธิภาพเมื่อใช้โปรแกรมประมวลผลคำอธิบายประกอบ
หมายเหตุ: ฟีเจอร์นี้ใช้ได้กับ Gradle 4.10.1 ขึ้นไป ยกเว้น Gradle 5.1 เนื่องจากปัญหา 8194 ของ Gradle
-
สำหรับโปรเจ็กต์ที่ใช้ Kapt (โปรเจ็กต์ Kotlin ล้วนๆ ส่วนใหญ่และโปรเจ็กต์แบบผสม Kotlin-Java): ระบบจะเปิดใช้การคอมไพล์ Java แบบเพิ่มทีละน้อย แม้ว่าคุณจะใช้การเชื่อมโยงข้อมูลหรือปลั๊กอิน Retro-Lambda ก็ตาม การประมวลผลคำอธิบายประกอบโดยงาน Kapt ยังไม่เพิ่มขึ้น
-
สำหรับโปรเจ็กต์ที่ไม่ได้ใช้ Kapt (โปรเจ็กต์ Java เท่านั้น): หากตัวประมวลผลคำอธิบายประกอบที่คุณใช้ทั้งหมดรองรับการประมวลผลคำอธิบายประกอบที่เพิ่มขึ้น ระบบจะเปิดใช้การคอมไพล์ Java เพิ่มโดยค่าเริ่มต้น หากต้องการตรวจสอบ การใช้ตัวประมวลผลคำอธิบายประกอบที่เพิ่มขึ้น โปรดดู Gradle ฉบับ 5277
อย่างไรก็ตาม หากโปรแกรมประมวลผลคำอธิบายประกอบอย่างน้อย 1 รายการไม่รองรับการสร้างแบบเพิ่มทีละขั้น ระบบจะไม่เปิดใช้การคอมไพล์ Java แบบเพิ่มทีละขั้น แต่คุณสามารถใส่ Flag ต่อไปนี้ในไฟล์
gradle.properties
แทนได้android.enableSeparateAnnotationProcessing=true
เมื่อคุณใส่ Flag นี้ ปลั๊กอิน Gradle ของ Android จะเรียกใช้โปรแกรมประมวลผลคำอธิบายประกอบในภารกิจแยกต่างหาก และอนุญาตให้งานคอมไพล์ Java ทำงานแบบเพิ่มทีละรายการ
-
-
ข้อมูลการแก้ไขข้อบกพร่องที่ดีขึ้นเมื่อใช้ API ที่ล้าสมัย: เมื่อพบว่าคุณใช้ API ที่ระบบไม่รองรับแล้ว ปลั๊กอินจะแสดงข้อมูลที่ละเอียดยิ่งขึ้นเพื่อช่วยคุณระบุตำแหน่งที่ใช้ API นั้น หากต้องการดูข้อมูลเพิ่มเติม คุณต้องใส่ข้อมูลต่อไปนี้ในไฟล์
gradle.properties
ของโปรเจ็กต์android.debug.obsoleteApi=true
นอกจากนี้ คุณยังเปิดใช้แฟล็กได้โดยส่ง
-Pandroid.debug.obsoleteApi=true
จากบรรทัดคำสั่ง -
คุณเรียกใช้การทดสอบการใช้เครื่องมือในโมดูลฟีเจอร์ได้จากบรรทัดคำสั่ง
การเปลี่ยนแปลงลักษณะการทำงาน
-
การกำหนดค่างานแบบ Lazy Loading: ตอนนี้ปลั๊กอินจะใช้ API การสร้างงานใหม่ของ Gradle เพื่อหลีกเลี่ยงการเริ่มต้นและกำหนดค่างานที่ไม่จำเป็นต่อบิลด์ปัจจุบัน (หรืองานที่ไม่ได้อยู่ในกราฟงานการดำเนินการ) ตัวอย่างเช่น หากคุณมีตัวแปรของบิลด์หลายรายการ เช่น ตัวแปรบิลด์ “รุ่น” และ “แก้ไขข้อบกพร่อง” และคุณกำลังสร้างแอปเวอร์ชัน “แก้ไขข้อบกพร่อง” ปลั๊กอินจะหลีกเลี่ยงการเริ่มต้นและกำหนดค่างานสำหรับแอปเวอร์ชัน “รุ่น”
การเรียกใช้เมธอดเก่าบางรายการใน Variants API เช่น
variant.getJavaCompile()
อาจยังคงบังคับให้กําหนดค่างาน หากต้องการให้บิลด์เพิ่มประสิทธิภาพสำหรับการกำหนดค่าแบบ Lazy ให้เรียกใช้เมธอดใหม่ที่แสดงผลออบเจ็กต์ TaskProvider แทน เช่นvariant.getJavaCompileProvider()
หากคุณเรียกใช้งานการสร้างที่กำหนดเอง โปรดดูวิธีปรับให้เข้ากับ API การสร้างงานใหม่ของ Gradle
-
สำหรับประเภทบิลด์หนึ่งๆ เมื่อตั้งค่า
useProguard false
ตอนนี้ปลั๊กอินจะใช้ R8 แทน ProGuard เพื่อลดขนาดและสร้างความสับสนให้กับโค้ดและทรัพยากรของแอป หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับ R8 โปรดอ่านบล็อกโพสต์นี้จากบล็อกของนักพัฒนาแอป Android -
การสร้างคลาส R เร็วขึ้นสำหรับโปรเจ็กต์ไลบรารี: ก่อนหน้านี้ ปลั๊กอิน Android Gradle จะสร้างไฟล์
R.java
สำหรับแต่ละรายการที่ต้องใช้ของโปรเจ็กต์ จากนั้นจะคอมไพล์คลาส R เหล่านั้นควบคู่ไปกับคลาสอื่นๆ ของแอป ตอนนี้ปลั๊กอินจะสร้าง JAR ที่มีคลาส R ที่คอมไพล์แล้วของแอปโดยตรงโดยไม่ต้องสร้างคลาสR.java
ระดับกลางก่อน การเพิ่มประสิทธิภาพนี้อาจช่วยปรับปรุงประสิทธิภาพการสร้างสำหรับโปรเจ็กต์ที่มีโปรเจ็กต์ย่อยและไลบรารีจำนวนมาก รวมถึงปรับปรุงความเร็วในการจัดทำดัชนีใน Android Studio ได้อย่างมาก -
เมื่อสร้าง Android App Bundle ตอนนี้ APK ที่สร้างขึ้นจาก App Bundle ที่กําหนดเป้าหมายเป็น Android 6.0 (API ระดับ 23) ขึ้นไปจะรวมไลบรารีแบบเนทีฟเวอร์ชันที่ไม่ได้บีบอัดไว้โดยค่าเริ่มต้น การเพิ่มประสิทธิภาพนี้ทำให้อุปกรณ์ไม่ต้องทำสำเนาของไลบรารี จึงช่วยลดขนาดของแอปในดิสก์ได้ หากต้องการปิดใช้การเพิ่มประสิทธิภาพนี้ ให้เพิ่มข้อมูลต่อไปนี้ลงในไฟล์
gradle.properties
android.bundle.enableUncompressedNativeLibs = false
-
ปลั๊กอินบังคับใช้เวอร์ชันขั้นต่ำของปลั๊กอินของบุคคลที่สามบางรายการ
-
การซิงค์โปรเจ็กต์แบบตัวแปรเดียว: การซิงค์โปรเจ็กต์กับการกำหนดค่าบิลด์เป็นขั้นตอนสำคัญในการช่วยให้ Android Studio เข้าใจโครงสร้างโปรเจ็กต์ อย่างไรก็ตาม กระบวนการนี้อาจใช้เวลานานสำหรับโปรเจ็กต์ขนาดใหญ่ หากโปรเจ็กต์ใช้ตัวแปรบิลด์หลายรายการ ตอนนี้คุณสามารถเพิ่มประสิทธิภาพการซิงค์โปรเจ็กต์ได้โดยจำกัดให้ซิงค์เฉพาะตัวแปรที่คุณเลือกอยู่ในปัจจุบัน
คุณต้องใช้ Android Studio 3.3 ขึ้นไปกับปลั๊กอิน Android Gradle 3.3.0 ขึ้นไปจึงจะเปิดใช้การเพิ่มประสิทธิภาพนี้ได้ เมื่อมีคุณสมบัติตรงตามข้อกำหนดเหล่านี้ IDE จะแจ้งให้คุณเปิดใช้การเพิ่มประสิทธิภาพนี้เมื่อซิงค์โปรเจ็กต์ นอกจากนี้ ระบบจะเปิดใช้การเพิ่มประสิทธิภาพในโปรเจ็กต์ใหม่โดยค่าเริ่มต้นด้วย
หากต้องการเปิดใช้การเพิ่มประสิทธิภาพนี้ด้วยตนเอง ให้คลิกไฟล์ > การตั้งค่า > เวอร์ชันทดลอง > Gradle (Android Studio > ค่ากําหนด > เวอร์ชันทดลอง > Gradle ใน Mac) แล้วเลือกช่องทําเครื่องหมายซิงค์เฉพาะตัวแปรที่ใช้งานอยู่
หมายเหตุ: การเพิ่มประสิทธิภาพนี้รองรับโปรเจ็กต์ที่มีภาษา Java และ C++ อย่างเต็มรูปแบบ และรองรับ Kotlin บางส่วน เมื่อเปิดใช้การเพิ่มประสิทธิภาพสำหรับโปรเจ็กต์ที่มีเนื้อหา Kotlin การซิงค์ Gradle จะกลับไปใช้ตัวแปรแบบสมบูรณ์ภายใน
-
การดาวน์โหลดแพ็กเกจ SDK ที่ขาดหายไปโดยอัตโนมัติ: ฟังก์ชันการทำงานนี้ได้รับการขยายการให้บริการเพื่อรองรับ NDK แล้ว ดูข้อมูลเพิ่มเติมได้ที่หัวข้อดาวน์โหลดแพ็กเกจที่ขาดหายไปโดยอัตโนมัติด้วย Gradle
แก้ไขบั๊ก
-
ปลั๊กอิน Android Gradle 3.3.0 แก้ไขปัญหาต่อไปนี้
- กระบวนการสร้างที่เรียกใช้
android.support.v8.renderscript.RenderScript
instead of the AndroidX version, despite Jetifier being enabled - ความขัดแย้งเนื่องจาก
androidx-rs.jar
รวมถึงการรวมแบบคงที่annotation.AnyRes
- เมื่อใช้ RenderScript คุณไม่จําเป็นต้องตั้งค่าเวอร์ชันเครื่องมือสร้างในไฟล์
build.gradle
ด้วยตนเองอีกต่อไป
- กระบวนการสร้างที่เรียกใช้