ปลั๊กอิน 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)

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

ปัญหาที่แก้ไขแล้ว
ข้อผิดพลาด: "ไม่มี VersionRequirement ที่มีรหัสที่ระบุในตาราง" หลังจากอัปเกรด AGP 7.2.2 -> 7.4.0
R8 NullPointerException at 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และแหล่งที่มาของแอป

ดูข้อมูลเพิ่มเติมได้ที่ ความคิดเห็น #19 ของปัญหา #191813691

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

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

ตั้งค่าสถานะ ค่าเริ่มต้นใหม่ ค่าเริ่มต้นก่อนหน้า หมายเหตุ
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 ในโปรเจ็กต์ที่ต้องการ เรามีแผนจะนำ Flag นี้ออกใน AGP 9.0
android.nonFinalResIds true false AGP 8.0 จะสร้างคลาส R ที่มีช่องที่ไม่ใช่ Final โดยค่าเริ่มต้น
android.nonTransitiveRClass true false AGP 8.0 จะสร้างคลาส R สำหรับทรัพยากรที่กําหนดไว้ในโมดูลปัจจุบันเท่านั้น
android.enableR8.fullMode true false AGP 8.0 จะเปิดใช้โหมด R8 แบบเต็มโดยค่าเริ่มต้น ดูรายละเอียดเพิ่มเติมได้ที่โหมด R8 แบบเต็ม

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

ตั้งแต่ AGP 8.0 เป็นต้นไป คุณจะเปลี่ยนค่าของ Flag เหล่านี้ไม่ได้อีกต่อไป หากคุณระบุค่าในไฟล์ 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 ในการทดสอบยูนิต AGP 8.0 จะสร้างไฟล์ test_config.properties ที่มีเฉพาะเส้นทางแบบสัมพัทธ์ วิธีนี้ช่วยให้การทดสอบ 1 หน่วยของ 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 ใช้ Flag นี้เพื่อลบล้างโปรไฟล์การเรียกใช้เริ่มต้นจาก SettingsExtension ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบเกี่ยวกับปลั๊กอินการตั้งค่า

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

ไม่รองรับการกําหนดพร็อพเพอร์ตี้แบบเลื่อนเวลาของ 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
  ...
}

โปรไฟล์การเรียกใช้เครื่องมือ

ปลั๊กอินการตั้งค่ายังช่วยให้คุณสร้างโปรไฟล์การเรียกใช้สําหรับเครื่องมือบางรายการได้ด้วย โปรไฟล์การเรียกใช้จะกําหนดวิธีเรียกใช้เครื่องมือ โดยคุณเลือกโปรไฟล์การเรียกใช้ที่แตกต่างกันได้ ทั้งนี้ขึ้นอยู่กับสภาพแวดล้อม ในโปรไฟล์การเรียกใช้ คุณสามารถกําหนดอาร์กิวเมนต์ 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

เมื่อใช้ Android Gradle Plugin 8.0 เพื่อสร้างแอป คุณต้องใช้ JDK 17 เพื่อเรียกใช้ 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 แล้ว
อย่าเพิ่ม ignorewarnings ไปยัง R8 โดยค่าเริ่มต้น
เตือนเมื่อไม่มีไฟล์ ProGuard
AGP 7.3.0 ทำให้การซิงค์ Gradle สำหรับโปรเจ็กต์แพลตฟอร์ม Gradle ใช้งานไม่ได้
ไลบรารี apksig: ApkVerifier$Result.getV4SchemeSigners() มีสถานะเป็นส่วนตัว
หยุดสร้างการกําหนดค่า androidJacocoAnt หากไม่ได้เปิดใช้การครอบคลุม
การใช้ @IntDef ในคอมโพเนนต์ไลบรารีจะไม่สร้าง annotations.zip ใน aar
ไม่พบ Super Type ทั่วไปสำหรับ และ
เพิ่มเวอร์ชันพร็อพเพอร์ตี้ gradle ของ LINT_PRINT_STACKTRACE=true
อาร์ติแฟกต์สำเร็จรูปที่ล้าสมัยซึ่งรวมอยู่ใน AAR
ย้ายข้อมูลจากพร็อพเพอร์ตี้ปลายทางไปยังพร็อพเพอร์ตี้ outputLocation เพื่อจัดการกับคำเตือนการเลิกใช้งานและเตรียมพร้อมสำหรับ Gradle 9.0
พิจารณาแฟล็ก `--release` เมื่อตั้งค่างาน JavaCompile
[AGP-7.3.0-beta03] ShrinkResourcesNewShrinkerTask is failed when there is an empty line after xml declaration
เป้าหมาย lintVital ที่ทำงานโดยค่าเริ่มต้นในตัวแปรแก้ไขข้อบกพร่อง
เตือนเมื่อไม่มีไฟล์ ProGuard
AGP พยายามเพิ่ม kotlinOptions.freeCompilerArgs ในเฟสการดําเนินการของงาน
การซิงค์ Gradle ล้มเหลว: การซิงค์ล้มเหลว: ไม่ทราบสาเหตุ
DependencyReportTask ใช้ร่วมกับแคชการกําหนดค่าไม่ได้
การลบล้างทรัพยากรด้วย resValue ใน build.gradle จะทำให้เกิดข้อผิดพลาด: ทรัพยากรซ้ำ
ประเภทบิลด์ "แก้ไขข้อบกพร่อง" มีคีย์ 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 ที่ "อัปเดต"
ปัญหาเกี่ยวกับปลั๊กอิน Android Gradle 7.0 ขึ้นไปและ Android Test: ไม่พบทรัพยากร: id
configureCMakeDebug ขัดข้องเป็นพักๆ ด้วยข้อยกเว้น Null Pointer
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 ใช้งาน Variant API ไม่ได้เนื่องจาก "ระบบไม่รองรับการค้นหาค่าที่แมปของ map(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
VersionChecks จะไม่จัดการการตรวจสอบช่วงของ Kotlin
ผลบวกลวงสําหรับ InlinedApi เมื่อรวม
Lint รายงานผลบวกลวงเกี่ยวกับ Recycle ของ openInputStream
[BuildTool/Lint] พร็อพเพอร์ตี้คอนสตรัคเตอร์ ChecksSdkIntAtLeast
Lint: การผสาน PartialResults ทํางานไม่ถูกต้อง
Android Studio ทำเครื่องหมายเวอร์ชันที่ระบุว่าล้าสมัยอย่างไม่ถูกต้อง
AndroidDeprecationInspection.DeprecationFilter EP ไม่เคยลงทะเบียนในไฟล์ android-plugin.xml
คําอธิบายการตรวจสอบ Lint ของ AccessibilityDetector ล้าสมัย
การตรวจสอบ SDK_INT ของ Lint ควรเข้าใจตัวแปรในเครื่องชั่วคราว
ข้อผิดพลาดเมื่อ TestMode.TYPE_ALIAS แทนที่ประเภทฟังก์ชันด้วย typealias
ข้อบกพร่อง: เมื่อสร้าง ObjectAnimator นอกบล็อกโค้ดปัจจุบัน จะมีคำเตือนที่ไม่ถูกต้องว่าไม่ได้เริ่มต้น #38
Lint: NPE due to querying Application instance in mergeOnly mode
กฎ Lint ของ NonConstantResourceId ตรวจไม่พบการกำหนดค่าคงที่จากรหัสทรัพยากร
not showing error on view id
การแปลงคีย์แคชทรัพยากร Lint ให้เป็นรูปแบบเดิมไม่สำเร็จจะทำให้เกิดข้อผิดพลาด Lint (แต่ควรเป็นคำเตือน)
AGP Flamingo Alpha 8 Lint NewApi Desugar Regression
TypedArray#close (API 31) ไม่ได้แปลงเป็นรูปแบบทั่วไป แต่ AS ไม่แสดงคำเตือนเมื่อใช้ใน try-with-resources
Lint จะไม่ตรวจสอบการแคสต์ที่ถูกต้องสำหรับผู้รับสาย
Lint จะตรวจสอบเฉพาะการแคสต์ที่ปลอดภัยสำหรับอินเทอร์เฟซที่ติดตั้งใช้งานโดยตรงเท่านั้น ไม่ใช่อินเทอร์เฟซที่รับช่วงมา
การผสานรวม Lint
ปัจจุบันไฟล์พื้นฐานเป็นอินพุตและเอาต์พุตของงาน Lint
Shrinker (R8)
ข้อผิดพลาด NPE / การยืนยันในโปรแกรมตรวจสอบเฟรม CF
การถดถอยหลังจากนําแคชการค้นหาช่องออก
`:app:minifyVariantWithR8` ทำให้เกิด NullPointerException ใน AGP 7.4.0-beta02
R8: ClassNotFoundException เมื่อ -allowaccessmodification
เพิ่มการรองรับตัวรับบริบทในข้อมูลเมตา
java.lang.VerifyError: Verifier rejected class androidx.compose.ui.graphics.colorspace.o: void androidx.compose.ui.graphics.colorspace.o.(java.lang.Object) failed to verify: void androidx.compose.ui.graphics.colorspace.o.(java.lang.Object): [0x0] cannot access instance field java.lang.Object androidx.compose.ui.graphics.colorspace.n.a from object of type Precise Reference: androidx.compose.ui.graphics.colorspace.o
AGP 7.4.0/7.3.1 - พยายามจัดคิวการดำเนินการในรายการงานของคิวที่ไม่สามารถพุชได้
การลดขนาดโค้ด Renderscript: ประสิทธิภาพลดลงอย่างมากเมื่ออัปเกรด AGP จาก 7.3.1 เป็น 7.4.0

ปลั๊กอิน Android Gradle 8.0.1

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

ปลั๊กอิน Android Gradle 8.0.2

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