ปลั๊กอิน Android Gradle 8.2.0 (พ.ย. 2023)

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

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

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

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

มาโครใหม่สำหรับระบุเส้นทาง JDK

#GRADLE_LOCAL_JAVA_HOME คือมาโครใหม่ที่คุณสามารถใช้เพื่อระบุเส้นทาง JDK ซึ่งจะช่วยให้ระบุเส้นทางบ้านของ Java ที่ใช้สำหรับการดำเนินการของเดรัม Gradle (กระบวนการเบื้องหลัง) สำหรับโปรเจ็กต์ของคุณได้ง่ายและปลอดภัยยิ่งขึ้น ระบบจะจัดเก็บการเลือกเส้นทางในช่อง java.home ในไฟล์ .gradle/config.properties ตั้งค่าช่องนี้ผ่านการตั้งค่า JDK ของ Gradle ใน Android Studio: File (หรือ Android Studio ใน macOS) > Settings > Build, Execution, Deployment > Build Tools > Gradle

โปรเจ็กต์ใหม่จะใช้ #GRADLE_LOCAL_JAVA_HOME โดยค่าเริ่มต้น ระบบจะย้ายข้อมูลโปรเจ็กต์ที่มีอยู่ไปยังมาโครใหม่โดยอัตโนมัติหลังจากซิงค์สําเร็จ เว้นแต่คุณจะใช้มาโครอย่าง #JAVA_HOME อยู่แล้ว

ประโยชน์หลักๆ ของมาโครใหม่มีดังนี้

  • คุณสามารถแก้ไขเส้นทาง JDK ด้วยตนเองเพื่อเรียกใช้การซิงค์ได้โดยไม่ต้องเปิดโปรเจ็กต์ก่อน
  • ข้อผิดพลาดเกี่ยวกับ Gradle และเวอร์ชัน JDK ของโปรเจ็กต์ที่เข้ากันไม่ได้ลดลงเนื่องจากมีแหล่งข้อมูลเดียวสำหรับการเลือก JDK ของ Gradle

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

ปลั๊กอิน Android Gradle 8.2.0

ปัญหาที่แก้ไขแล้ว
ปลั๊กอิน Android Gradle
ประเภทแหล่งที่มาที่กําหนดเองควรสร้างชุดแหล่งที่มาหลายรูปแบบ
การตรวจสอบเวอร์ชัน SDK จะไม่จัดการผู้ใช้ส่วนขยาย SDK
DependenciesInfoBuilder ต้องการการอัปเดต API และเอกสาร
DexingNoClasspathTransform (minSdk >= 24) ที่มีเป้าหมายเป็น Java 11 ไม่สำเร็จเนื่องจากไม่มีสมาชิกที่ฝังอยู่
DslExtension.Builder.extendProjectWith() ไม่ทํางานตามที่อธิบายไว้ใน Groovy
เพิ่ม VariantSelector.withFlavor API ที่ไม่ได้ใช้ kotlin.Pair
AndroidLintAnalysisTask (:lintAnalyzeExternalRelease) ไม่พบแคชเนื่องจาก `proguard.txt` มีการเปลี่ยนแปลง
ไฟล์ Manifest ที่ผสานของแอปมีแอตทริบิวต์ extractNativeLibs และ useEmbeddedDex จาก Dependency
AIDL ไม่สําเร็จด้วย build-tools 33.0.0
AGP: แสดงเส้นทางไปยังเครื่องมือ AIDL และไฟล์ AIDL ของเฟรมเวิร์กเป็น API สาธารณะ
คำขอ: อนุญาตให้ IDE เสนอวิธีแก้ไขสำหรับ "PermittedSubclasses requires ASM9"
เป้าหมายไบต์โค้ด 17 เมื่อคอมไพล์ AGP
นํา VariantManager.getModifiedName ออก
AndroidTest.packaging.jniLibs.keepDebugSymbols ไม่ส่งผลต่อการจัดแพ็กเกจ androidTest
งานทดสอบการใช้เครื่องมือ GMD ค้าง และเมื่อลองอีกครั้งก็เริ่มล้มเหลว
generateLocaleConfig ใน agp 8.1.0 ใช้การจัดเรียงแบบไม่แน่นอน ซึ่งทำให้บิลด์ที่ซ้ำกันได้ใช้งานไม่ได้
ProcessApplicationManifest.navigationJsons มีไฟล์ที่มีเส้นทางแบบสัมบูรณ์
ไม่อนุญาตให้เข้าถึง GradleBuildProject.Builder ผ่าน AnalyticsConfiguratorService หลังจากสร้าง AnalyticsService แล้ว
AndroidTest.packaging.jniLibs.keepDebugSymbols ไม่ส่งผลต่อการจัดแพ็กเกจ androidTest
การคอมไพล์ที่อนุญาตค่าสีที่ผิดกฎหมาย
"ReplaceWith" สำหรับ VariantBuilder ไม่ถูกต้อง
Gradle 8.1 ทำให้แคชการกําหนดค่าใช้งานไม่ได้เนื่องจาก .gradle/.android/analytics.settings
ข้อความการเลิกใช้งานไม่ได้ใช้ "ReplaceWith"
แสดงวิธีรับเวอร์ชัน NDK เริ่มต้น
ปลั๊กอิน Android Gradle ต้องใช้ Java 17 เพื่อทำงาน
ASM Transform และ toAppend() ใช้ร่วมกันไม่ได้
แก้ไข LintErrors เมื่อเรียกใช้ Lint ด้วย K2 UAST ผ่าน Gradle ในโปรเจ็กต์ KMP
รองรับ missingDimensionStrategy ระดับตัวแปร และอาจรองรับ fallback ที่ตรงกับประเภท/Flavour ของบิลด์
ระบบนำ `android.injected.studio.version` ออกแล้วใน Android Studio Giraffe
เพิ่มความสามารถในการปิดใช้ AndroidXDependencyCheck
generateLocaleConfig ใน agp 8.1.0 ใช้การจัดเรียงแบบไม่แน่นอน ซึ่งทำให้บิลด์ที่ซ้ำกันได้ใช้งานไม่ได้
แสดงข้อกำหนดเวอร์ชัน R8 / D8 ในข้อมูลเมตา AAR (เช่น สำหรับ coreLibraryDesugaring และ API ใหม่ที่ไม่อยู่ในบรรทัด)
คําเตือนการซิงค์: "ไม่ควรเข้าถึง GradleBuildProject.Builder ผ่าน AnalyticsConfiguratorService หลังจากสร้าง AnalyticsService แล้ว"
อัปเดตเป็น Gradle 8.2 รุ่นนําร่องหรือ RC
เข้าถึง "java.lang.Comparable" ไม่ได้
androidResources ไม่พร้อมใช้งานในโมดูลไลบรารี Android
การดําเนินการสำหรับงาน ":app:mergeReleaseClasses" ไม่สําเร็จหลังจากอัปเดต AGP จาก 8.0.2 เป็น 8.1.0
Gradle 8.1 ทำให้แคชการกําหนดค่าใช้งานไม่ได้เนื่องจาก .gradle/.android/analytics.settings
[AGP 8.1.0] ./gradlew test ดำเนินการไม่สำเร็จพร้อมข้อความ "ไม่พบเอาต์พุตไฟล์ Manifest" หากทั้ง splits.abi.isEnable และ testOptions.unitTests.isIncludeAndroidResources เป็น "จริง"
Android Studio Giraffe ไม่สนใจ versionCodeOverride เมื่อใช้ AGP 8.1
AGP 8.1.0 จะถอนการติดตั้งแอปหลังจากทำการทดสอบที่มีเครื่องมือวัด แต่ 7.4.2 จะไม่ถอนการติดตั้ง
การเปลี่ยนรูปแบบ APK ทําให้เกิดข้อผิดพลาดกับ ListingFileRedirectTask
HEDGEHOG REGRESSION: ปุ่มเรียกใช้ทำงานล่าช้า 2-3 วินาที (การสร้างข้อมูลจำเพาะ)
Dexer (D8)
เปิดใช้เรคคอร์ดเนทีฟและคลาสที่ปิดผนึกเมื่อจัดทําการจัดทําดัชนีสําหรับ min-api 34 ขึ้นไป
Lint
การตรวจสอบ Lint ที่สร้างขึ้นทันทีจัดการ AppComponentFactory ไม่ดี
Lint 8.2.0 เวอร์ชันอัลฟ่ายังไม่รองรับการนําเข้าฟังก์ชันระดับบนสุดใน Kotlin
เพิ่มตัวเลือกเพื่อไม่รวมหมายเลขบรรทัดและคอลัมน์ในข้อมูลพื้นฐานของ Lint
เพิ่มตัวเลือกเพื่อไม่รวมหมายเลขบรรทัดและคอลัมน์ในข้อมูลพื้นฐานของ Lint
การทดสอบ Lint ไม่รองรับฟีเจอร์ภาษาของ Java 17
Bumblebee 2021.1.1 แพตช์ 1 ระบุว่า commons-io เวอร์ชันเก่า (20030203.000550) ใหม่กว่า 2.11.0
Lint 8.2.0 เวอร์ชันอัลฟ่ายังไม่รองรับการนําเข้าฟังก์ชันระดับบนสุดใน Kotlin
Bumblebee 2021.1.1 แพตช์ 1 ระบุว่า commons-io เวอร์ชันเก่า (20030203.000550) ใหม่กว่า 2.11.0
Android Studio ทำเครื่องหมายเวอร์ชันที่ระบุว่าล้าสมัยอย่างไม่ถูกต้อง
Lint จะไม่สนใจปัญหา UseValueOf เมื่อใช้ K2 UAST
ปัญหาที่ไม่คาดคิดจากโปรเจ็กต์อื่นที่ Android Lint แจ้งว่าไม่ถูกต้อง
Android Lint ดำเนินการในไลบรารี KMP ไม่สำเร็จเนื่องจาก "พร็อพเพอร์ตี้ "variantInputs.name" ไม่มีค่าที่กำหนดค่าไว้"
การผสานรวม Lint
ข้อผิดพลาด DuplicatePlatformClasses จาก Dependency testImplementation
Shrinker (R8)
java.lang.VerifyError: Verifier rejected class
บิลด์ค้างอยู่ที่ :minifyReleaseWithR8 เมื่อใช้ไลบรารี Apache POI
Kotlin 1.9 ทำให้ R8 ทำลาย Lambda ของ Kotlin หากมีการนําการตรวจสอบค่า Null ออก

ปลั๊กอิน Android Gradle 8.2.1

ปัญหาที่แก้ไขแล้ว
ปลั๊กอิน Android Gradle
อย่าเรียกใช้งานการจัดทําไฟล์ Dex ในคลาสของโปรเจ็กต์ย่อยเมื่อจัดทําไฟล์ Dex ผ่านการเปลี่ยนรูปแบบอาร์ติแฟกต์แล้ว
ปลั๊กอิน Android Gradle ไม่สำเร็จด้วย JavaVersion.VERSION_11 และ OpenJDK 21 ea
Dexer (D8)
กรองข้อมูลออกจากระเบียนสำหรับ Android U
Shrinker (R8)
R8 สร้างไฟล์ dex ที่ใช้งานไม่ได้ ซึ่งส่งผลให้เกิดข้อยกเว้นการแคสต์คลาสที่รันไทม์
R8 ทําให้อินเทอร์เฟซเปลี่ยนเป็นอินเทอร์เฟซที่เข้าถึงไม่ได้
R8 Flurry SDK ขัดข้องกับ AGP 8.2.0
Android - R8 ทําให้คลาสย่อยของ LinearLayoutManager ขัดข้อง
ClassCastException ใน R8 เมื่อเปิดการบรรจุใหม่และปิดการย่อโค้ด การปรับให้ยากต่อการอ่าน (Obfuscation) และการเพิ่มประสิทธิภาพ
R8 ค้างอยู่ใน BridgeAnalyzer.analyzeMethod
R8 v8.2.33, "java.lang.VerifyError: Bad type on operand stack" รันไทม์ขัดข้องหลังจากอัปเกรด

ปลั๊กอิน Android Gradle 8.2.2

ปัญหาที่แก้ไขแล้ว
ปลั๊กอิน Android Gradle
ตั้งค่า JaCoCo เวอร์ชันใน AGP 8.2.0 ไม่ได้
Dexer (D8)
[desugared library] ไลบรารี Desugared เวอร์ชัน 2.1 ใช้ร่วมกับ R8 เวอร์ชันก่อนหน้าไม่ได้
การเพิ่มประสิทธิภาพทํางานแม้ใช้เพียง D8 หรือไม่
Shrinker (R8)
[R8 8.3.21] R8 8.3.21 มีขนาดใหญ่กว่า R8 8.1.56 1.57 MB
class.getInterfaces() แสดงผลว่างเปล่า