ปลั๊กอิน 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 |
|
|
ปลั๊กอิน Android Gradle 9.2.0
| ปัญหาที่แก้ไขแล้ว | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ปลั๊กอิน Android Gradle |
|
|||||||||||||||
| เครื่องมือวิเคราะห์ซอร์สโค้ด |
|
|||||||||||||||
| การผสานรวมเครื่องมือวิเคราะห์ซอร์สโค้ด |
|
|||||||||||||||
| Shrinker (R8) |
|
|||||||||||||||