ปลั๊กอิน Android Gradle 3.3.0 (มกราคม 2019)

ปลั๊กอิน Android เวอร์ชันนี้กำหนดให้ต้องมีสิ่งต่อไปนี้

เวอร์ชันขั้นต่ำ เวอร์ชันเริ่มต้น หมายเหตุ
Gradle 4.10.1 4.10.1 ดูข้อมูลเพิ่มเติมได้ที่การอัปเดต Gradle เมื่อใช้ Gradle 5.0 ขึ้นไป ขนาดฮีปหน่วยความจำของ Gradle Daemon เริ่มต้นจะลดลงจาก 1 GB เป็น 512 MB ซึ่งอาจส่งผลให้ประสิทธิภาพการสร้างถดถอย หากต้องการลบล้างการตั้งค่าเริ่มต้นนี้ ให้ระบุขนาดฮีปของ Gradle Daemon ในไฟล์ 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 ที่ได้รับการปรับปรุง: เมื่อแก้ไข Dependency ใน Classpath ของรันไทม์และเวลาคอมไพล์ ปลั๊กอิน Android Gradle จะพยายามแก้ไขข้อขัดแย้งของเวอร์ชันดาวน์สตรีมบางอย่างสำหรับ Dependency ที่ปรากฏใน Classpath หลายรายการ

    เช่น หาก classpath ของรันไทม์มีไลบรารี A เวอร์ชัน 2.0 และ classpath ของการคอมไพล์มีไลบรารี A เวอร์ชัน 1.0 ปลั๊กอินจะอัปเดต ทรัพยากร Dependency ใน classpath ของการคอมไพล์เป็นไลบรารี A เวอร์ชัน 2.0 โดยอัตโนมัติ เพื่อหลีกเลี่ยงข้อผิดพลาด

    อย่างไรก็ตาม หาก classpath ของรันไทม์มีไลบรารี A เวอร์ชัน 1.0 และ การคอมไพล์มีไลบรารี A เวอร์ชัน 2.0 ปลั๊กอินจะไม่ลดเวอร์ชัน ทรัพยากร Dependency ใน classpath ของการคอมไพล์เป็นไลบรารี A เวอร์ชัน 1.0 และคุณจะได้รับ ข้อผิดพลาด ดูข้อมูลเพิ่มเติมได้ที่ แก้ไขความขัดแย้ง ระหว่างเส้นทางของคลาส

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

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

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

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

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

      android.enableSeparateAnnotationProcessing=true
                  

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

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

              android.debug.obsoleteApi=true
            

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

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

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

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

    การเรียกใช้เมธอดรุ่นเก่าบางรายการใน Variants API เช่น variant.getJavaCompile() อาจยังคงบังคับการกำหนดค่าของงาน หากต้องการตรวจสอบว่า บิลด์ได้รับการเพิ่มประสิทธิภาพสำหรับการกำหนดค่างานแบบเลซี ให้เรียกใช้เมธอดใหม่ ซึ่งจะแสดงผลออบเจ็กต์ TaskProvider แทน เช่น variant.getJavaCompileProvider()

    หากคุณเรียกใช้งานบิลด์ที่กำหนดเอง โปรดดูวิธี ปรับให้เข้ากับ API การสร้างงานใหม่ของ Gradle

  • สำหรับประเภทบิลด์ที่กำหนด เมื่อตั้งค่า useProguard false ปลั๊กอินจะใช้ R8 แทน ProGuard เพื่อลดขนาดและปกปิดโค้ดและทรัพยากรของแอป อ่านข้อมูลเพิ่มเติมเกี่ยวกับ R8 ได้ใน บล็อกโพสต์นี้ จากบล็อกของนักพัฒนาแอป Android

  • สร้างคลาส R สำหรับโปรเจ็กต์ไลบรารีได้เร็วขึ้น: ก่อนหน้านี้ปลั๊กอิน Android Gradle จะสร้างไฟล์ R.java สำหรับการอ้างอิงของโปรเจ็กต์แต่ละรายการ แล้วคอมไพล์คลาส R เหล่านั้นพร้อมกับคลาสอื่นๆ ของแอป ตอนนี้ปลั๊กอินจะสร้าง JAR ที่มีคลาส R ที่คอมไพล์แล้วของแอป โดยตรงโดยไม่ต้องสร้างคลาส R.java ระดับกลางก่อน การเพิ่มประสิทธิภาพนี้อาจช่วยปรับปรุงประสิทธิภาพการสร้างสำหรับโปรเจ็กต์ที่มีโปรเจ็กต์ย่อยและทรัพยากร Dependency ของไลบรารีจำนวนมากได้อย่างมาก รวมถึงปรับปรุงความเร็วในการจัดทำดัชนีใน 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 Plugin 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 แทนเวอร์ชัน AndroidX แม้ว่าจะเปิดใช้ Jetifier แล้วก็ตาม
    • การขัดกันเนื่องจาก androidx-rs.jar รวมถึงแบบรวมแบบคงที่ annotation.AnyRes
    • เมื่อใช้ RenderScript คุณไม่จำเป็นต้องตั้งค่าเวอร์ชันเครื่องมือบิลด์ในไฟล์ build.gradle ด้วยตนเองอีกต่อไป