ปลั๊กอิน 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 Home ที่ใช้สำหรับการดำเนินการ Daemon (กระบวนการเบื้องหลัง) ของ 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.2

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

ปลั๊กอิน Android Gradle เวอร์ชัน 8.2.1

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

ปลั๊กอิน Android Gradle เวอร์ชัน 8.2.0

ปัญหาที่แก้ไขแล้ว
ปลั๊กอิน Android Gradle
ประเภทแหล่งที่มากำหนดเองควรสร้างชุดซอร์สหลายรสชาติ
การตรวจสอบเวอร์ชัน SDK ไม่รองรับผู้ใช้ส่วนขยาย SDK
DependenciesInfoBuilder ต้องมีการอัปเดต API + เอกสารประกอบ
DexingNoClasspathTransform (minSdk >= 24) ที่กำหนดเป้าหมายเป็น Java 11 ล้มเหลวเนื่องจากไม่มีสมาชิก Nest
DslExtension.Builder.extendProjectWith() ไม่ทำงานตามที่อธิบายไว้ใน Groovy
เพิ่ม VariantSelector.withFlavor API ที่ไม่ใช้ kotlin.Pair
AndroidLintAnalysisTask (:lintAnalyzeExternalRelease) ไม่พบแคชเนื่องจาก `proguard.txt` เปลี่ยนไป
ไฟล์ Manifest ที่ผสานแล้วของแอปมีแอตทริบิวต์ extractNativeLibs และ useEmbeddedDex จากทรัพยากร Dependency
AIDL ล้มเหลวโดยมีเครื่องมือสร้าง 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 และ toAppend() ไม่เข้ากัน
แก้ไข LintError เมื่อเรียกใช้เครื่องมือวิเคราะห์ซอร์สโค้ดด้วย K2 UAST ผ่าน Gradle ในโปรเจ็กต์ KMP
การรองรับ missingDimensionStrategy ระดับตัวแปร และอาจมีการจับคู่ fallback ของประเภทบิลด์/รสชาติ
ระบบนำ `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 Milestone หรือ 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 ล้มเหลวโดยมีข้อความ "Unable to find manifest output" หากทั้ง 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)
เปิดใช้ Native Record และ Sealed Class เมื่อทำ Dexing สำหรับ min-api 34 ขึ้นไป
เครื่องมือวิเคราะห์ซอร์สโค้ด
การตรวจสอบเครื่องมือวิเคราะห์ซอร์สโค้ดที่สร้างขึ้นไม่รองรับ AppComponentFactory
เครื่องมือวิเคราะห์ซอร์สโค้ด 8.2.0 Alpha ยังไม่รองรับการนำเข้าฟังก์ชันระดับบนสุดใน Kotlin
เพิ่มตัวเลือกเพื่อไม่ให้รวมหมายเลขบรรทัดและคอลัมน์ใน Baseline ของเครื่องมือวิเคราะห์ซอร์สโค้ด
เพิ่มตัวเลือกเพื่อไม่ให้รวมหมายเลขบรรทัดและคอลัมน์ใน Baseline ของเครื่องมือวิเคราะห์ซอร์สโค้ด
การทดสอบเครื่องมือวิเคราะห์ซอร์สโค้ดไม่รองรับฟีเจอร์ภาษา Java 17
Bumblebee 2021.1.1 Patch 1 ระบุว่า commons-io เวอร์ชันเก่า (20030203.000550) ใหม่กว่า 2.11.0
เครื่องมือวิเคราะห์ซอร์สโค้ด 8.2.0 Alpha ยังไม่รองรับการนำเข้าฟังก์ชันระดับบนสุดใน Kotlin
Bumblebee 2021.1.1 Patch 1 ระบุว่า commons-io เวอร์ชันเก่า (20030203.000550) ใหม่กว่า 2.11.0
Android Studio ระบุเวอร์ชันที่ระบุว่าล้าสมัยอย่างไม่ถูกต้อง
เครื่องมือวิเคราะห์ซอร์สโค้ดไม่สนใจปัญหา UseValueOf เมื่อใช้ K2 UAST
เครื่องมือวิเคราะห์ซอร์สโค้ด Android แจ้งปัญหาที่ไม่คาดคิดจากโปรเจ็กต์อื่น
เครื่องมือวิเคราะห์ซอร์สโค้ด Android ล้มเหลวในไลบรารี KMP พร้อมข้อความ `property 'variantInputs.name' doesn't have a configured value.`
การผสานรวมเครื่องมือวิเคราะห์ซอร์สโค้ด
ข้อผิดพลาดของเครื่องมือวิเคราะห์ซอร์สโค้ด DuplicatePlatformClasses จากทรัพยากร Dependency ของ testImplementation
Shrinker (R8)
java.lang.VerifyError: ผู้ตรวจสอบปฏิเสธคลาส
บิลด์ค้างอยู่ที่ :minifyReleaseWithR8 เมื่อใช้ไลบรารี Apache POI
Kotlin 1.9 ทำให้ R8 ทำลายแลมบ์ดาของ Kotlin หากมีการนำการตรวจสอบค่า Null ออก