ปลั๊กอิน 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 อีกต่อไป ด้วยเหตุนี้ ระบบจะเก็บคำอธิบายประกอบที่มองไม่เห็นในรันไทม์ไว้ก็ต่อเมื่อมีการระบุชื่อแอตทริบิวต์อย่างชัดเจนโดยไม่มีไวลด์การ์ด

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

-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: Didn't find class "com.android.tools.r8.RecordTag" after upgrading gradle to 9.2.0

ปลั๊กอิน Android Gradle 9.2.0

ปัญหาที่แก้ไขแล้ว
ปลั๊กอิน Android Gradle
Warn users if they have commonTest but forget withHostTestBuilder
[fused lib - public] OkHttp includes sources
Cannot run androidDeviceTest with manifest placeholders in library (AGP 9.0.0 with com.android.kotlin.multiplatform.library plugin)
AGP should warn if user has src/androidDeviceTest/java with java disabled
AGP 9.0 No androidComponents.onVariant equivalent for applicationVariants.all.mergeAssetsProvider
`*.xml.flat` files contain absolute file paths
R8D8ThreadPoolBuildService not registered
JdkImageTransform failure with JDK 26
Automatically encode minAgpVersion in the AAR metadata in AGP 10.0
Renaming APK using new AGP DSL
Error when accessing (but not evaluating) bootClasspath IllegalStateException: targetCompatibility is not yet finalized
keepRules sourceset not working for libraries
Embed CC compatibility declaration in AGP
Update Kotlin Gradle plugin dependency to 2.3.10
Allow higher compileSdk for tests than main
เครื่องมือวิเคราะห์ซอร์สโค้ด
Lint typo in message
Truncated context window in Lint SARIF reports due to stuck offset pointer in `SarifReporter.kt`
Lint Gradle client is missing a critical feature making it unreliable at best
Lint error when resource shrinking is disabled
AGP 9 Lint reports WrongConstant when using nested IntDef constants
Lint error when resource shrinking is disabled
การผสานรวมเครื่องมือวิเคราะห์ซอร์สโค้ด
Android Lint fails with custom lint checks compiled to Java 21 bytecode
Lint Gradle tasks ignore --quiet flag
Shrinker (R8)
Targeting Java 11 seems to break d8