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

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

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

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

การเผยแพร่แพตช์

รายการเวอร์ชันแพตช์สำหรับปลั๊กอิน Android Gradle มีดังนี้ 8.0

ปลั๊กอิน Android Gradle 8.0.2 (พฤษภาคม 2023)

ดูรายการข้อบกพร่องที่แก้ไขแล้วใน AGP 8.0.2 ได้ที่ปัญหาที่ปิดแล้วของ Android Studio 2022.2.1

ปลั๊กอิน Android Gradle 8.0.1 (พฤษภาคม 2023)

การอัปเดตเล็กน้อยนี้รวมการแก้ไขข้อบกพร่องต่อไปนี้

ปัญหาที่แก้ไข
ข้อผิดพลาด: "ไม่มีข้อกำหนดเวอร์ชันซึ่งมีรหัสที่ระบุในตาราง" หลังจากอัปเกรด AGP 7.2.2 -> 7.4.0
R8 NullPointerException ที่ MarkTypeAsLive AGP 7.4.1
[R8 4.0.53] การยืนยันคลาสแบบฮาร์ดใน Android 11 ล้มเหลว

การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ: ต้องใช้เนมสเปซในสคริปต์บิลด์ระดับโมดูล

คุณต้องตั้งค่าเนมสเปซในไฟล์ build.gradle.kts ระดับโมดูล ไม่ใช่ไฟล์ Manifest คุณเริ่มใช้พร็อพเพอร์ตี้ DSL ของ namespace ได้ตั้งแต่ AGP 7.3 เป็นต้นไป ดูข้อมูลเพิ่มเติมได้ที่ ตั้งค่าเนมสเปซ

เมื่อย้ายข้อมูลไปยัง DSL ของเนมสเปซ โปรดระมัดระวังปัญหาต่อไปนี้

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

สำหรับข้อมูลเพิ่มเติม โปรดดู ปัญหา #191813691 ความคิดเห็น #19

การเปลี่ยนแปลงที่ส่งผลต่อเวอร์ชันเก่า: ค่าเริ่มต้นของตัวเลือกการสร้าง

ตั้งแต่ AGP 8.0 เป็นต้นไป ค่าเริ่มต้นสำหรับแฟล็กเหล่านี้จะเปลี่ยนเป็น เพื่อปรับปรุงประสิทธิภาพบิลด์ หากต้องการความช่วยเหลือในการปรับโค้ดให้รองรับการเปลี่ยนแปลงบางอย่างเหล่านี้ ให้ใช้เครื่องมือช่วยอัปเกรด AGP (เครื่องมือ > เครื่องมือช่วยอัปเกรด AGP) Assistant การอัปเกรดจะแนะนําให้คุณ อัปเดตโค้ดเพื่อรองรับการทำงานใหม่หรือการตั้งค่าสถานะเพื่อคงไว้ การทำงานก่อนหน้านี้

ตั้งค่าสถานะ ค่าเริ่มต้นใหม่ ค่าเริ่มต้นก่อนหน้า หมายเหตุ
android.defaults.buildfeatures.buildconfig false true AGP 8.0 จะไม่สร้าง BuildConfig โดยค่าเริ่มต้น คุณต้องมี เพื่อระบุตัวเลือกนี้โดยใช้ DSL ในโปรเจ็กต์ที่คุณต้องการ
android.defaults.buildfeatures.aidl false true AGP 8.0 จะไม่เปิดใช้การรองรับ AIDL โดยค่าเริ่มต้น คุณต้องระบุตัวเลือกนี้โดยใช้ DSL ในโปรเจ็กต์ที่ต้องการ เรามีแผนที่จะนํา Flag นี้ออกใน AGP 9.0
android.defaults.buildfeatures.renderscript false true AGP 8.0 ไม่ได้เปิดใช้การรองรับ RenderScript โดยค่าเริ่มต้น คุณต้องระบุตัวเลือกนี้โดยใช้ DSL ในโปรเจ็กต์ที่ต้องการ ช่วงเวลานี้ เรามีแผนที่จะนำธงออกใน AGP 9.0
android.nonFinalResIds true false AGP 8.0 จะสร้างคลาส R ที่มีช่องที่ยังไม่ได้สุดท้าย "ค่าเริ่มต้น"
android.nonTransitiveRClass true false AGP 8.0 สร้าง R คลาสสำหรับทรัพยากรที่กำหนดไว้ใน โมดูลปัจจุบันเท่านั้น
android.enableR8.fullMode true false โดยค่าเริ่มต้น AGP 8.0 จะเปิดใช้ R8 โหมดเต็ม ดูรายละเอียดเพิ่มเติมได้ที่ โหมด R8 เต็ม

การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ: ค่าตัวเลือกบิลด์ที่บังคับใช้

ตั้งแต่ AGP 8.0 เป็นต้นไป คุณจะเปลี่ยนค่าสำหรับแฟล็กเหล่านี้ไม่ได้อีกต่อไป หากคุณระบุค่าในไฟล์ gradle.properties ระบบจะไม่สนใจค่าดังกล่าวและ AGP จะพิมพ์คําเตือน

ตั้งค่าสถานะ ค่าที่บังคับใช้ หมายเหตุ
android.dependencyResolutionAtConfigurationTime.warn true AGP 8.0 จะแสดงคำเตือนหากตรวจพบการแก้ไขการกำหนดค่าระหว่าง เฟสการกำหนดค่าเนื่องจากจะส่งผลเสียต่อการกำหนดค่า Gradle ครั้ง
android.r8.failOnMissingClasses true AGP 8.0 ล้มเหลวกับบิลด์ที่ใช้ R8 หากไม่มีคลาสสำหรับ เพื่อเพิ่มประสิทธิภาพ DEX ให้ดียิ่งขึ้น วิธีแก้ปัญหานี้คือคุณต้องเพิ่มไลบรารีที่ขาดหายไปหรือ-dontwarnเก็บกฎ โปรดดูรายละเอียดเพิ่มเติมที่หัวข้อไม่มีคำเตือนเกี่ยวกับคลาสในเครื่องมือบีบอัด R8
android.testConfig.useRelativePath true เมื่อรองรับการใช้ทรัพยากร เนื้อหา และไฟล์ Manifest ของ Android เปิดใช้งานการทดสอบ 1 หน่วย AGP 8.0 จะสร้าง test_config.properties ไฟล์ที่มีเฉพาะที่เกี่ยวข้อง เส้นทาง วิธีนี้ช่วยให้มั่นใจว่าการทดสอบหน่วยของ Android จะใช้ Gradle ได้เสมอ แคชของบิลด์
android.useNewJarCreator true AGP ใช้ไลบรารี Zipflinger เมื่อสร้างไฟล์ JAR เพื่อปรับปรุง สร้างประสิทธิภาพ
android.bundletool.includeRepositoriesInDependencyReport true เมื่อเปิดใช้การเพิ่มข้อมูล Dependency ของ SDK ใน AAB และ APK แล้ว AGP 8.0 จะเพิ่มรายการที่เก็บโปรเจ็กต์ลงในข้อมูลนี้ด้วย ถึง เรียนรู้เพิ่มเติม ดู ข้อมูลการขึ้นต่อกันสำหรับ Play Console
android.enableArtProfiles true ขณะนี้ระบบจะสร้างโปรไฟล์พื้นฐานเสมอ โปรดดูรายละเอียดในโปรไฟล์พื้นฐาน
android.enableNewResourceShrinker true ใช้การติดตั้งใช้งานเครื่องมือบีบอัดทรัพยากรแบบใหม่โดยค่าเริ่มต้น ฟิลด์ ตัวย่อทรัพยากร รวมถึงการสนับสนุนฟีเจอร์แบบไดนามิก
android.enableSourceSetPathsMap true ใช้สำหรับการคำนวณการแมปเส้นทางทรัพยากรแบบสัมพัทธ์เพื่อให้บิลด์ Gradle เป็นเวอร์ชันล่าสุดบ่อยขึ้น
android.cacheCompileLibResources true ตอนนี้ระบบจะแคชทรัพยากรไลบรารีที่คอมไพล์ไว้โดยค่าเริ่มต้นเนื่องจาก Gradle จะติดตามไฟล์ทรัพยากรตามตำแหน่งของโปรเจ็กต์ ต้องมี android.enableSourceSetPathsMap เปิดใช้อยู่
android.disableAutomaticComponentCreation true AGP 8.0 จะไม่สร้าง SoftwareComponent โดยค่าเริ่มต้น โดย AGP จะสร้าง SoftwareComponents สำหรับตัวแปรที่กำหนดค่าให้เผยแพร่เท่านั้น โดยใช้ DSL การเผยแพร่

Flag เวอร์ชันเสถียรใหม่สําหรับโปรไฟล์การดําเนินการ

AGP มี Flag android.settings.executionProfile ใหม่ ใช้แฟล็กนี้เพื่อ ลบล้างโปรไฟล์การดำเนินการเริ่มต้น SettingsExtension ดูข้อมูลเพิ่มเติมได้ในเอกสารปลั๊กอินการตั้งค่า

หากต้องการดูตัวอย่าง Flag ทดลอง โปรดดูบันทึกประจำรุ่นเวอร์ชันตัวอย่าง

ไม่รองรับการกำหนดพร็อพเพอร์ตี้แบบ Lazy Loading ของ Kotlin

หากคุณใช้ Kotlin DSL ของ Gradle สำหรับสคริปต์บิลด์ โปรดทราบว่า Android Studio และ AGP 8.0 ไม่สนับสนุนการกำหนดพร็อพเพอร์ตี้ทดลองโดยใช้ โอเปอเรเตอร์ = รายการ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับฟีเจอร์นี้ โปรดดู บันทึกประจำรุ่น และ เอกสารประกอบ

หมวดหมู่งานของเครื่องมือวิเคราะห์บิลด์

เริ่มต้นด้วย Android Studio Flamingo ตัววิเคราะห์บิลด์มีมุมมองเริ่มต้นใหม่สำหรับ งานที่ส่งผลต่อระยะเวลาของบิลด์ หากโปรเจ็กต์ใช้ AGP 8.0 ขึ้นไป เครื่องมือวิเคราะห์การสร้างจะจัดกลุ่มงานตามหมวดหมู่แทนที่จะแสดงทีละรายการ เช่น ระบบจะจัดกลุ่มงานสำหรับทรัพยากร Android, Kotlin หรือ Dexing ไว้ด้วยกัน แล้วจัดเรียงตามระยะเวลาการสร้าง วิธีนี้ช่วยให้ทราบได้ง่ายว่าหมวดหมู่ใดส่งผลต่อเวลาสร้างมากที่สุด การขยายแต่ละหมวดหมู่จะแสดงรายการงานที่เกี่ยวข้อง หากต้องการแสดงงานทีละรายการโดยไม่มีการจัดกลุ่ม ให้ใช้เมนูแบบเลื่อนลงจัดกลุ่มตาม

หมวดหมู่งานของเครื่องมือวิเคราะห์บิลด์

ปลั๊กอินการตั้งค่าใหม่

AGP 8.0.0-alpha09 เปิดตัวปลั๊กอินการตั้งค่าใหม่ ปลั๊กอินการตั้งค่าช่วยให้คุณรวมการกําหนดค่าส่วนกลาง (การกําหนดค่าที่ใช้กับโมดูลทั้งหมด) ไว้ในที่เดียวได้ คุณจึงไม่ต้องคัดลอกและวางการกําหนดค่าในหลายโมดูล นอกจากนี้ คุณสามารถใช้ปลั๊กอินการตั้งค่าเพื่อสร้างเครื่องมือ โปรไฟล์การดำเนินการหรือวิธีการอื่นๆ สำหรับวิธีเรียกใช้เครื่องมือ และ สลับใช้ไปมา

หากต้องการใช้ปลั๊กอินการตั้งค่า ให้ใช้ปลั๊กอินในไฟล์ settings.gradle

apply plugin 'com.android.settings'

รวมการกำหนดค่าส่วนกลาง

หากต้องการกำหนดค่าส่วนกลาง ให้ใช้การบล็อก android ใหม่ใน settings.gradle ตัวอย่างเช่น

android {
  compileSdk 31
  minSdk 28
  ...
}

โปรไฟล์การดำเนินการกับเครื่องมือ

ปลั๊กอินการตั้งค่ายังช่วยให้คุณสร้างโปรไฟล์การดำเนินการสำหรับเครื่องมือบางอย่างได้ด้วย CANNOT TRANSLATE โปรไฟล์การดำเนินการจะเป็นตัวกำหนดวิธีเรียกใช้เครื่องมือ คุณสามารถเลือก โปรไฟล์การดำเนินการที่ขึ้นอยู่กับสภาพแวดล้อม ในโปรไฟล์การดำเนินการ คุณ ตั้งค่าอาร์กิวเมนต์ JVM สำหรับเครื่องมือและกำหนดค่าให้ทำงานในกระบวนการที่แยกต่างหากได้ ปัจจุบันรองรับเฉพาะเครื่องมือ R8 เท่านั้น

สร้างโปรไฟล์การดำเนินการและตั้งค่าโปรไฟล์การดำเนินการเริ่มต้นใน settings.gradle ตามที่แสดงในตัวอย่างต่อไปนี้

android {
  execution {
    profiles {
      high {
        r8 {
          jvmOptions += ["-Xms2048m", "-Xmx8192m", "-XX:+HeapDumpOnOutOfMemoryError"]
          runInSeparateProcess true
        }
      }
      low {
        r8 {
          jvmOptions += ["-Xms256m", "-Xmx2048m", "-XX:+HeapDumpOnOutOfMemoryError"]
          runInSeparateProcess true
        }
      }
      ci {
        r8.runInSeparateProcess false
      }
    }
    defaultProfile "low"
  }
}

หากต้องการลบล้างโปรไฟล์เริ่มต้น ให้เลือกโปรไฟล์อื่นโดยใช้พร็อพเพอร์ตี้ android.experimental.settings.executionProfile ในไฟล์ gradle.properties ดังนี้

android.experimental.settings.executionProfile=high

คุณยังตั้งค่าพร็อพเพอร์ตี้นี้โดยใช้บรรทัดคำสั่งได้ด้วย ซึ่งจะช่วยให้คุณตั้งค่าเวิร์กโฟลว์ต่างๆ ได้ ตัวอย่างเช่น หากคุณมีเวิร์กโฟลว์การผสานรวมอย่างต่อเนื่อง คุณสามารถใช้บรรทัดคำสั่งเพื่อเปลี่ยนโปรไฟล์การเรียกใช้โดยไม่ต้องเปลี่ยนไฟล์ settings.gradle

./gradlew assembleRelease \
  -Pandroid.experimental.settings.executionProfile=ci

ต้องใช้ JDK 17 เพื่อเรียกใช้ AGP 8.0

ตอนนี้คุณจำเป็นต้องใช้ JDK 17 เพื่อใช้ปลั๊กอิน Android Gradle 8.0 ในการสร้างแอป เพื่อเรียกใช้ Gradle Android Studio Flamingo จะรวม JDK 17 และกำหนดค่า Gradle ให้ใช้โดยค่าเริ่มต้น ซึ่งหมายความว่าผู้ใช้ Android Studio ส่วนใหญ่ไม่จําเป็นต้องทําการเปลี่ยนแปลงการกําหนดค่าใดๆ ในโปรเจ็กต์

หากคุณต้องการตั้งค่าเวอร์ชัน JDK ด้วยตนเอง ใช้โดย AGP ภายใน Android Studio คุณต้องใช้ JDK 17 ขึ้นไป

เมื่อใช้ AGP แยกจาก Android Studio ให้อัปเกรดเวอร์ชัน JDK โดยการตั้งค่าJAVA_HOMEตัวแปรสภาพแวดล้อมหรือ-Dorg.gradle.java.homeตัวเลือกบรรทัดคำสั่งไปยังไดเรกทอรีการติดตั้ง JDK 17

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

ปลั๊กอิน Android Gradle 8.0.0

ปัญหาที่แก้ไขแล้ว
ปลั๊กอิน Android Gradle
การสร้างไม่สําเร็จในแบบไม่สม่ำเสมอในงาน MergeResources
เราเลิกใช้งาน JavaPluginConvention และ HasConvention แล้ว
ตำแหน่งไฟล์ไม่ถูกต้องและไม่สอดคล้องกันสำหรับ Transform API ใหม่
ปลั๊กอิน Android Gradle ไม่ควรใช้ฟังก์ชัน GUtil.toWords(string) ที่เลิกใช้งานแล้ว
ปลั๊กอิน Android Gradle ไม่ควรใช้ฟังก์ชัน ConfigureUtil.configure(closure, target) ที่เลิกใช้งานแล้ว
อัปเดตการทดสอบ AGP ให้ใช้ KGP 1.7.20-เบต้า
Gradle 7.4 ล้มเหลว (สร้างอินสแตนซ์ของ AnalyticsService ไม่ได้)
"ค่าคงที่ enum ที่ไม่รู้จัก" ใหม่ จาก Javac บน AGP 7.4.0-alpha09
การกำหนดค่า MergeGeneratedProguardFilesCreationAction ทำงานช้าแม้จะเปิดการแคชการกำหนดค่าไว้
[AGP] เพิ่มไดเรกทอรีต้นทางที่สร้างขึ้นไปยังโมเดล IDE (Variant API)
เลิกใช้งาน JavaPluginConvention และ HasConvention แล้ว
อย่าเพิ่มคำเตือนการละเว้นลงใน R8 โดยค่าเริ่มต้น
เตือนเมื่อไม่มีไฟล์ ProGuard
AGP 7.3.0 ทำให้การซิงค์ Gradle สำหรับโปรเจ็กต์แพลตฟอร์ม Gradle ใช้งานไม่ได้
ไลบรารี apksig: ApkVerifier$Result.getV4SchemeSigners() มีสถานะเป็นส่วนตัว
หยุดสร้างการกำหนดค่า androidJacocoAnt หากไม่ได้เปิดใช้การครอบคลุม
การใช้ @IntDef ในคอมโพเนนต์ไลบรารีจะไม่สร้าง annotations.zip ใน aar
ไม่พบประเภทขั้นสูงทั่วไปสำหรับ และ
เพิ่มเวอร์ชันคุณสมบัติ Gradle ของ LINT_PRINT_STACKTRACE=true
อาร์ติแฟกต์ Prefab ที่ไม่มีการอัปเดตได้รับการบรรจุลงใน AAR
ย้ายข้อมูลจากพร็อพเพอร์ตี้ปลายทางไปยังพร็อพเพอร์ตี้ outputLocation เพื่อจัดการกับคำเตือนการเลิกใช้งานและเตรียมพร้อมสำหรับ Gradle 9.0
คำนึงถึง Flag "--release" เมื่อตั้งค่างาน JavaCompile
[AGP-7.3.0-beta03] ShrinkResourcesNewShrinkerTask ล้มเหลวเมื่อมีบรรทัดว่างหลังจากการประกาศ XML
เป้าหมาย lintVital ที่ทำงานโดยค่าเริ่มต้นในตัวแปรแก้ไขข้อบกพร่อง
เตือนเมื่อไม่มีไฟล์ Proguard
AGP พยายามเพิ่ม kotlinOptions.freeCompilerArgs ในเฟสการดําเนินการของงาน
การซิงค์ Gradle ล้มเหลว: การซิงค์ล้มเหลว: ไม่ทราบสาเหตุ
DependencyReportTask ใช้ร่วมกับแคชการกําหนดค่าไม่ได้
การลบล้างทรัพยากรด้วย resValue ใน create.gradle นำไปสู่ข้อผิดพลาด: ทรัพยากรซ้ำกัน
"debug" ประเภทบิลด์มีคีย์ Signing เริ่มต้น แต่ประเภทอื่นๆ ไม่มี
การใช้ฟีเจอร์แบบไดนามิกและการลดขนาดทรัพยากรทำให้รันไทม์ขัดข้อง
ประเภทบิลด์ "แก้ไขข้อบกพร่อง" มีคีย์ Signing เริ่มต้น แต่ประเภทอื่นๆ ไม่มี
ไดเรกทอรีแหล่งที่มาที่สร้างขึ้นซึ่งแสดงเป็นไดเรกทอรี Java ในผู้ให้บริการแหล่งที่มาหลักของโมเดล Lint
Gradle 8.0-milestone-2 ทําให้เกิดข้อยกเว้นใน AGP
เพิ่มประสิทธิภาพการผสานไฟล์ Manifest สําหรับแอปและไลบรารี
เพิ่ม gradle-settings-api ลงในการสร้าง Javadoc
"ค่าคงที่ enum ที่ไม่รู้จัก" ใหม่ จาก Javac บน AGP 7.4.0-alpha09
AGP 7.4.0-alpha09 สร้างบิลด์ที่จะไม่อัปโหลดไปยัง Firebase App Distribution
lint.xml ในโมดูลไม่ได้รับการพิจารณาสำหรับการตรวจสอบงาน Lint ในวันที่ UP-TO-DATE
ปัญหาปลั๊กอิน Android Gradle 7.0 ขึ้นไป และ Android Tests: ไม่พบแหล่งข้อมูล: รหัส
configCMakeDebug ข้อขัดข้องที่ไม่สม่ำเสมอโดยมีข้อยกเว้นของตัวชี้ที่เป็นค่าว่าง
IllegalAccessError ขณะอัปเกรดโปรเจ็กต์เป็น AS2022.2.1.5, FireBasePerfPlugin
การซิงค์ล้มเหลวโดยมีข้อผิดพลาดที่อ่านไม่ออกว่า "คอลเล็กชันไม่มีองค์ประกอบที่ตรงกับพริเนกต์"
Instrumentation API จะไม่เปลี่ยนรูปแบบไฟล์ในเครื่องที่ต้องใช้
ข้อผิดพลาด "มีการค้นหา AnnotationProcessorOptions.arguments" เมื่ออัปเดตเป็น 7.4 เบต้า 1
ย้ายปลั๊กอินสาธารณะของ Gradle ไปยัง gradle-api และนํา BasePlugin.getExtension ออก
ระบบจะไม่ใช้ r8.jvmArgs
JDK17 เป็นเวอร์ชันต่ำสุดที่จำเป็นสำหรับ AGP
AGP 8.0.0 A8 ทำลายโปรไฟล์พื้นฐาน
เปลี่ยน 'compileSdkVersion' ไปยัง 'compileSdk' ในข้อความ CheckAarMetadataTask ใน AGP 8.0
AGP 7.4.0-rc01 แยก API ของตัวแปรด้วย "การค้นหาค่าที่จับคู่ของแผนที่(provider(java.util.Set)) ก่อนงาน '...' "เสร็จสมบูรณ์แล้ว" ไม่ได้รับการสนับสนุน"
ปัญหาเกี่ยวกับแคชการกำหนดค่า "com.android.build.gradle.tasks.ShaderCompile"
การเพิ่มลงในทรัพยากร Java โดยใช้ AGP API จะทําให้แคชการกําหนดค่าใช้งานไม่ได้
ปลั๊กอิน Lint ไม่ได้เป็นส่วนหนึ่งของ gradle-api
DexingFileDependenciesTask.outputKeepRules เป็นไดเรกทอรีแต่ทำเครื่องหมายเป็น OutputFile
การอัปเกรดเป็น AGP 7.4 ส่งผลให้เกิด StackOverflowError
processDebugUnitTestManifest ไม่สําเร็จด้วยตัวยึดตําแหน่งในไฟล์ Manifest สําหรับตัวแปรการทดสอบ
Lint จะเข้าถึงข้อมูลชุดแหล่งที่มาโดยไม่มีข้อมูลอ้างอิง
ข้อผิดพลาดเกี่ยวกับบิลด์หมายถึง API ระดับ 34 ซึ่งไม่มีอยู่
"เราขอแนะนำให้ใช้ปลั๊กอิน Android Gradle ที่ใหม่กว่า" เมื่อไม่มีปลั๊กอินที่ใหม่กว่า
android.injected.testOnly=false ไม่ทํางาน
Dexer (D8)
ข้อผิดพลาดในการรวม Dex ที่เกี่ยวข้องกับการสังเคราะห์ส่วนกลางหลังจากอัปเกรด AS Canary 6 เป็น 7
อัปเดตไลบรารีข้อมูลเมตาของ Kotlin เป็นเวอร์ชัน 0.6.0
ดูเหมือนว่าจะต้องแก้ปัญหาชั่วคราวสำหรับ JDK-8272564 ใน API ระดับ 28-30
Lint
การตรวจสอบ Lint ของ ResourceType ไม่ทำงานสำหรับแหล่งที่มา kotlin
VersionCheck ไม่ได้จัดการการตรวจสอบช่วง Kotlin
ผลบวกลวงสําหรับ InlinedApi เมื่อรวม
Lint false positive Recycle regarding openInputStream
[BuildTool/Lint] พร็อพเพอร์ตี้คอนสตรัคเตอร์ ChecksSdkIntAtLeast
Lint: การผสาน PartialResults ทํางานไม่ถูกต้อง
Android Studio ทำเครื่องหมายเวอร์ชันที่ระบุว่าล้าสมัยอย่างไม่ถูกต้อง
ไม่เคยลงทะเบียน AndroidDeprecationInspection.DeprecationFilter EP ในไฟล์ android-plugin.xml
คำอธิบายการตรวจสอบ Lint ของตัวตรวจจับการช่วยเหลือพิเศษล้าสมัย
การตรวจสอบ SDK_INT ของ Lint ควรเข้าใจตัวแปรในเครื่องชั่วคราว
ข้อผิดพลาดเมื่อ TestMode.TYPE_ALIAS แทนที่ประเภทฟังก์ชันด้วย typealias
ข้อบกพร่อง: เมื่อสร้าง ObjectAnimator นอกบล็อกโค้ดปัจจุบัน จะมีคำเตือนที่ไม่ถูกต้องว่าไม่ได้เริ่มต้น #38
Lint: NPE เนื่องจากการค้นหาอินสแตนซ์ Application ในโหมดMergeOnly
กฎ Lint NonConstantResourceId ไม่สามารถตรวจพบเพื่อกำหนดค่าคงที่จากรหัสทรัพยากร
not showing error on view id
การดีซีเรียลไลซ์แคชของทรัพยากร Lint ทำให้เกิดข้อผิดพลาดของ Lint (แต่ควรเป็นคำเตือน)
AGP Flamingo Alpha 8 Lint NewApi Desugar การถดถอย
TypedArray#close (API 31) ไม่ได้ถูกเลิกใช้ แต่ AS ไม่แสดงคำเตือนเมื่อใช้ใน get-with-resources
Lint ไม่ตรวจสอบการแคสต์ที่ถูกต้องสำหรับผู้รับสาย
Lint จะตรวจสอบเฉพาะการแคสต์ที่ปลอดภัยสำหรับอินเทอร์เฟซที่ใช้งานโดยตรงเท่านั้น ไม่ใช่อินเทอร์เฟซที่สืบทอดมา
การรวม Lint
ขณะนี้ไฟล์พื้นฐานคืองานอินพุตและเอาต์พุตของงาน Lint
เครื่องลดขนาด (R8)
ข้อผิดพลาด NPE / การยืนยันในโปรแกรมตรวจสอบเฟรม CF
การถดถอยหลังจากนําแคชการค้นหาช่องออก
`:app:minifyVariantWithR8` ทำให้เกิด NullPointerException ใน AGP 7.4.0-beta02
R8: ClassNotFoundException เมื่อ -allowaccessmodification
เพิ่มการรองรับตัวรับบริบทในข้อมูลเมตา
และปฏิเสธการรับรองคลาส androidx.compose.
AGP 7.4.0/7.3.1 - พยายามจัดคิวการดำเนินการในรายการงานของคิวที่ไม่สามารถพุชได้
การลดขนาดโค้ด Renderscript: ประสิทธิภาพลดลงอย่างมากเมื่ออัปเกรด AGP จาก 7.3.1 เป็น 7.4.0

ปลั๊กอิน Android Gradle 8.0.1

ปัญหาที่แก้ไขแล้ว
เครื่องลดขนาด (R8)
ข้อผิดพลาด: "ไม่มี VersionRequirement ที่มีรหัสที่ระบุในตาราง" หลังจากอัปเกรด AGP 7.2.2 -> 7.4.0
R8 NullPointerException ที่ MarkTypeAsLive AGP 7.4.1
[R8 4.0.53] การยืนยันคลาสแบบฮาร์ดใน Android 11 ล้มเหลว

ปลั๊กอิน Android Gradle 8.0.2

ปัญหาที่แก้ไขแล้ว
Shrinker (R8)
R8 ล้มเหลวระหว่างบิลด์ Compose ที่มี ArrayIndexOutOfBoundsException
VerifyError: ผู้ตรวจสอบปฏิเสธคลาสเมื่อใช้ R8 กับ Kotlin 1.8.20
R8 บน AGP 8 ทำให้บริการ Google Fit ขัดข้อง
การรวมข้อมูลไฟล์ต้นฉบับที่มีชื่อซ้ำซึ่งซ้ำกันกับชื่ออินพุตแสดงอย่างไม่ถูกต้อง