ปลั๊กอิน Android Gradle 9.2.0 (เมษายน 2026)

ปลั๊กอิน Android Gradle 9.2 เป็นรุ่นย่อยที่มีฟีเจอร์และการปรับปรุงใหม่ๆ มากมาย

ความเข้ากันได้

ระดับ API สูงสุดที่ปลั๊กอิน Android Gradle 9.2 รองรับคือระดับ API 37.0 ข้อมูลอื่นๆ เกี่ยวกับความเข้ากันได้มีดังนี้

เวอร์ชันขั้นต่ำ เวอร์ชันเริ่มต้น หมายเหตุ
Gradle 9.4.1 9.4.1 ดูข้อมูลเพิ่มเติมได้ที่การอัปเดต Gradle
เครื่องมือสร้าง SDK 36.0.0 36.0.0 ติดตั้งหรือกำหนดค่าเครื่องมือสร้าง SDK
NDK ไม่มี 28.2.13676358 ติดตั้งหรือกำหนดค่า NDK เวอร์ชันอื่น
JDK 17 17 ดูข้อมูลเพิ่มเติมได้ที่การตั้งค่าเวอร์ชัน JDK

รายงานความครอบคลุมและการทดสอบแบบรวม

AGP 9.2.0-alpha07 มีงานในการสร้างแดชบอร์ด HTML ที่รวบรวมผลการทดสอบและความครอบคลุมจากประเภทการทดสอบต่างๆ (หน่วยและเครื่องมือวัด) โมดูล และตัวแปรบิลด์ ซึ่งให้ภาพรวมที่ครอบคลุมในแดชบอร์ดเดียว ดูข้อมูลเพิ่มเติมได้ที่สร้างรายงานการครอบคลุมของโค้ดแบบรวม และดูรายงานการทดสอบแบบรวม

การเปลี่ยนแปลง R8

การเปลี่ยนแปลง R8 ต่อไปนี้รวมอยู่ใน AGP 9.2.0

-keepattributes ความหมายที่เข้มงวดมากขึ้นสำหรับการเก็บคำอธิบายประกอบที่มองไม่เห็นรันไทม์

อ่านคำอธิบายประกอบที่มองไม่เห็นในรันไทม์ไม่ได้ในรันไทม์ ดังนั้น D8 จึง นำคำอธิบายประกอบที่มองไม่เห็นในรันไทม์ออกโดยไม่มีเงื่อนไข และไม่มีตัวเลือกในการเปลี่ยนแปลง การดำเนินการนี้

R8 รองรับการส่งออกคำอธิบายประกอบที่มองไม่เห็นในรันไทม์เพื่อให้เข้ากันได้กับ ProGuard แต่เมื่อคอมไพล์เป็น DEX โดยทั่วไปแล้ว ไม่ควรเก็บคำอธิบายประกอบที่มองไม่เห็นรันไทม์ไว้ อย่างไรก็ตาม แนวทางปฏิบัติทั่วไปคือการรวมกฎที่สะดวก -keepattributes *Annotation* (ทั้งทางตรงและทางอ้อมจากกฎการเก็บรักษาของผู้บริโภค) ไว้เพื่อให้ R8 เก็บคำอธิบายประกอบที่มองเห็นได้ในรันไทม์ แต่การทำเช่นนี้จะทำให้คำอธิบายประกอบที่มองไม่เห็นในรันไทม์ยังคงอยู่ด้วย

เพื่อลดปัญหานี้และให้ตรงกับลักษณะการทำงานของ D8 มากขึ้น -keepattributes รูปแบบที่มีไวลด์การ์ดจะไม่ตรงกับ RuntimeInvisibleAnnotations RuntimeInvisibleParameterAnnotations และ RuntimeInvisibleTypeAnnotations อีกต่อไป ด้วยเหตุนี้ ระบบจะเก็บคำอธิบายประกอบที่มองไม่เห็นในรันไทม์ไว้ก็ต่อเมื่อมีการกล่าวถึงแอตทริบิวต์ name อย่างชัดเจนโดยไม่มีอักขระไวด์การ์ด

ตอนนี้ไม่มีกฎต่อไปนี้ที่จะทำให้คำอธิบายประกอบที่รันไทม์ยังคงมองไม่เห็น

-keepattributes *
-keepattributes *Annotation*
-keepattributes *Invisible*

หากต้องการซ่อนคำอธิบายประกอบขณะรันไทม์ ให้ใช้กฎต่อไปนี้

-keepattributes RuntimeInvisibleAnnotations,
                RuntimeInvisibleParameterAnnotations,
                RuntimeInvisibleTypeAnnotations

การรองรับชื่อที่ปฏิเสธในกฎของสมาชิก

เราได้ขยายภาษาการกำหนดค่าเพื่อให้คุณสามารถจับคู่กับ รูปแบบชื่อสมาชิกที่ปฏิเสธได้แล้ว

เช่น หากต้องการจับคู่เมธอดทั้งหมดที่ไม่ได้ลงท้ายด้วย "ForTesting" ให้ใช้กฎต่อไปนี้

-keepclassmembers class com.example.MyClass {
  *** !*ForTesting(...);
}

นอกจากนี้ คุณยังปฏิเสธรูปแบบชื่อสมาชิกในเงื่อนไขเบื้องต้นของ-if กฎได้ด้วย หากรูปแบบชื่อสมาชิกที่ปฏิเสธมีไวลด์การ์ด คุณจะอ้างอิงไวลด์การ์ดดังกล่าวใน-if กฎที่ตามมาไม่ได้

ปัญหาที่แก้ไขแล้ว

ปลั๊กอิน Android Gradle 9.2.1

ปัญหาที่แก้ไขแล้ว
ปลั๊กอิน Android Gradle
java.lang.ClassNotFoundException: ไม่พบคลาส "com.android.tools.r8.RecordTag" หลังจากอัปเกรด Gradle เป็น 9.2.0

ปลั๊กอิน Android Gradle 9.2.0

ปัญหาที่แก้ไขแล้ว
ปลั๊กอิน Android Gradle
เตือนผู้ใช้หากมี commonTest แต่ลืม withHostTestBuilder
[fused lib - public] OkHttp มีแหล่งที่มา
เรียกใช้ androidDeviceTest ไม่ได้โดยมีตัวยึดตำแหน่งไฟล์ Manifest ในไลบรารี (AGP 9.0.0 ที่มีปลั๊กอิน com.android.kotlin.multiplatform.library)
AGP ควรแสดงคำเตือนหากผู้ใช้มี src/androidDeviceTest/java โดยปิดใช้ Java
AGP 9.0 ไม่มี androidComponents.onVariant ที่เทียบเท่าสำหรับ applicationVariants.all.mergeAssetsProvider
ไฟล์ `*.xml.flat` มีเส้นทางไฟล์สัมบูรณ์
ไม่ได้ลงทะเบียน R8D8ThreadPoolBuildService
JdkImageTransform ล้มเหลวด้วย JDK 26
เข้ารหัส minAgpVersion ในข้อมูลเมตา AAR ใน AGP 10.0 โดยอัตโนมัติ
การเปลี่ยนชื่อ APK โดยใช้ AGP DSL ใหม่
ข้อผิดพลาดเมื่อเข้าถึง (แต่ไม่ได้ประเมิน) bootClasspath IllegalStateException: targetCompatibility ยังไม่เสร็จสมบูรณ์
แหล่งที่มาของ keepRules ไม่ทำงานกับไลบรารี
ฝังประกาศความเข้ากันได้ของ CC ใน AGP
อัปเดตทรัพยากร Dependency ของปลั๊กอิน Kotlin สำหรับ Gradle เป็น 2.3.10
อนุญาตให้ใช้ compileSdk ที่สูงกว่าสำหรับเทสต์มากกว่า main
เครื่องมือวิเคราะห์ซอร์สโค้ด
Lint การสะกดผิดในข้อความ
หน้าต่างบริบทที่ถูกตัดทอนในรายงาน Lint SARIF เนื่องจากตัวชี้ออฟเซ็ตติดอยู่ใน `SarifReporter.kt`
ไคลเอ็นต์ Lint Gradle ไม่มีฟีเจอร์สำคัญที่ทำให้เชื่อถือไม่ได้
ข้อผิดพลาดของ Lint เมื่อปิดใช้การลดขนาดทรัพยากร
Lint ของ AGP 9 รายงาน WrongConstant เมื่อใช้ค่าคงที่ IntDef ที่ซ้อนกัน
ข้อผิดพลาดของ Lint เมื่อปิดใช้การลดขนาดทรัพยากร
การผสานรวมเครื่องมือวิเคราะห์ซอร์สโค้ด
เครื่องมือวิเคราะห์ซอร์สโค้ด Android ล้มเหลวเนื่องจากการตรวจสอบที่กำหนดเองของเครื่องมือวิเคราะห์ซอร์สโค้ดที่คอมไพล์เป็นไบต์โค้ด Java 21
งาน Lint Gradle ไม่สนใจแฟล็ก --quiet
Shrinker (R8)
การกำหนดเป้าหมาย Java 11 ดูเหมือนจะทำให้ d8 ทำงานไม่ได้