ปลั๊กอิน 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

3.3.3 (กรกฎาคม 2020)

การอัปเดตเล็กน้อยนี้รองรับความเข้ากันได้กับการตั้งค่าเริ่มต้นและฟีเจอร์ใหม่สำหรับ ระดับการเข้าถึงแพ็กเกจใน 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 และคุณจะได้รับข้อผิดพลาด ดูข้อมูลเพิ่มเติมได้ที่แก้ไขความขัดแย้งระหว่าง classpath

  • การคอมไพล์ Java แบบเพิ่มประสิทธิภาพเมื่อใช้โปรแกรมประมวลผลคำอธิบายประกอบ: การอัปเดตนี้ช่วยลดเวลาในการสร้างโดยปรับปรุงการรองรับการคอมไพล์ Java แบบเพิ่มประสิทธิภาพเมื่อใช้โปรแกรมประมวลผลคำอธิบายประกอบ

    หมายเหตุ: ฟีเจอร์นี้ใช้ได้กับ Gradle 4.10.1 ขึ้นไป ยกเว้น Gradle 5.1 เนื่องจากปัญหา 8194 ของ Gradle

    • สำหรับโปรเจ็กต์ที่ใช้ Kapt (โปรเจ็กต์ Kotlin ล้วนๆ ส่วนใหญ่และโปรเจ็กต์แบบผสม Kotlin-Java): ระบบจะเปิดใช้การคอมไพล์ Java แบบเพิ่มทีละน้อย แม้ว่าคุณจะใช้การเชื่อมโยงข้อมูลหรือปลั๊กอิน Retro-Lambda ก็ตาม การประมวลผลคำอธิบายประกอบโดยงาน Kapt ยังไม่เพิ่มขึ้น

    • สำหรับโปรเจ็กต์ที่ไม่ได้ใช้ Kapt (โปรเจ็กต์ Java เท่านั้น): หากโปรแกรมประมวลผลคำอธิบายประกอบที่คุณใช้ทั้งหมดรองรับการประมวลผลคำอธิบายประกอบแบบเพิ่มทีละรายการ ระบบจะเปิดใช้การคอมไพล์ Java แบบเพิ่มทีละรายการโดยค่าเริ่มต้น หากต้องการตรวจสอบการใช้งานตัวประมวลผลคำอธิบายประกอบที่เพิ่มขึ้น ให้ดูปัญหา 5277 ของ Gradle

      อย่างไรก็ตาม หากโปรแกรมประมวลผลคำอธิบายประกอบอย่างน้อย 1 รายการไม่รองรับการสร้างแบบเพิ่มทีละขั้น ระบบจะไม่เปิดใช้การคอมไพล์ Java แบบเพิ่มทีละขั้น แต่คุณสามารถใส่ Flag ต่อไปนี้ในไฟล์ gradle.properties แทนได้

      android.enableSeparateAnnotationProcessing=true
                  

      เมื่อคุณใส่ Flag นี้ ปลั๊กอิน Gradle ของ Android จะเรียกใช้โปรแกรมประมวลผลคำอธิบายประกอบในภารกิจแยกต่างหาก และอนุญาตให้งานคอมไพล์ Java ทำงานแบบเพิ่มทีละรายการ

  • ข้อมูลการแก้ไขข้อบกพร่องที่ดีขึ้นเมื่อใช้ API ที่ล้าสมัย: เมื่อพบว่าคุณใช้ API ที่ระบบไม่รองรับแล้ว ปลั๊กอินจะแสดงข้อมูลที่ละเอียดยิ่งขึ้นเพื่อช่วยคุณระบุตำแหน่งที่ใช้ API นั้น หากต้องการดูข้อมูลเพิ่มเติม คุณต้องใส่ข้อมูลต่อไปนี้ในไฟล์ gradle.properties ของโปรเจ็กต์

              android.debug.obsoleteApi=true
            

    นอกจากนี้ คุณยังเปิดใช้ Flag ได้โดยส่ง -Pandroid.debug.obsoleteApi=true จากบรรทัดคำสั่ง

  • คุณสามารถเรียกใช้การทดสอบเครื่องมือวัดผลในโมดูลฟีเจอร์จากบรรทัดคำสั่งได้

การเปลี่ยนแปลงลักษณะการทำงาน

  • การกำหนดค่าแบบ Lazy: ตอนนี้ปลั๊กอินใช้ 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 ด้วยตนเองอีกต่อไป