ปลั๊กอิน 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 คุณเริ่มใช้พร็อพเพอร์ตี้ namespace DSL ได้ตั้งแต่ AGP 7.3 เป็นต้นไป ดูข้อมูลเพิ่มเติมได้ที่ ตั้งค่าเนมสเปซ

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

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

ดูข้อมูลเพิ่มเติมได้ที่ issue #191813691 comment #19

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

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

ตั้งค่าสถานะ ค่าเริ่มต้นใหม่ ค่าเริ่มต้นก่อนหน้า หมายเหตุ
android.defaults.buildfeatures.buildconfig false true AGP 8.0 ไม่สร้าง BuildConfig โดยค่าเริ่มต้น คุณต้อง ระบุตัวเลือกนี้โดยใช้ DSL ในโปรเจ็กต์ที่คุณต้องการ
android.defaults.buildfeatures.aidl false true AGP 8.0 ไม่ได้เปิดใช้การรองรับ AIDL โดยค่าเริ่มต้น คุณต้องระบุ ตัวเลือกนี้โดยใช้ DSL ในโปรเจ็กต์ที่คุณต้องการ เรามีแผนจะนำฟีเจอร์นี้ออกใน 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 เป็นต้นไป คุณจะเปลี่ยนค่าของ 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 ที่มีเฉพาะเส้นทางแบบสัมพัทธ์ ซึ่งจะช่วยให้การทดสอบหน่วยของ 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 สามารถแคชทรัพยากรของไลบรารีที่คอมไพล์แล้วได้โดยค่าเริ่มต้น เนื่องจาก Gradle ติดตามไฟล์ทรัพยากรที่สัมพันธ์กับตำแหน่งของโปรเจ็กต์ ต้องเปิดใช้ android.enableSourceSetPathsMap
android.disableAutomaticComponentCreation true AGP 8.0 จะไม่สร้าง SoftwareComponent โดยค่าเริ่มต้น แต่ AGP จะสร้าง SoftwareComponents เฉพาะสำหรับตัวแปรที่กำหนดค่าให้เผยแพร่ โดยใช้ DSL การเผยแพร่

แฟล็กใหม่ที่เสถียรสำหรับโปรไฟล์การดำเนินการ

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

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

ไม่รองรับการกำหนดพร็อพเพอร์ตี้แบบเลซี่ของ 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 8.0 เพื่อสร้างแอป ตอนนี้คุณต้องใช้ JDK 17 เพื่อเรียกใช้ Gradle Android Studio Flamingo มาพร้อมกับ JDK 17 และกำหนดค่า Gradle ให้ใช้ JDK 17 โดยค่าเริ่มต้น ซึ่งหมายความว่าผู้ใช้ 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-Beta
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 หากไม่ได้เปิดใช้ Coverage
การใช้ @IntDef ในคอมโพเนนต์ไลบรารีจะไม่สร้าง annotations.zip ใน aar
ไม่พบประเภทซูเปอร์ไทป์ทั่วไปสำหรับ และ
เพิ่มพร็อพเพอร์ตี้ Gradle ของ LINT_PRINT_STACKTRACE=true
การแพ็กเกจชิ้นงานสำเร็จรูปที่ล้าสมัยลงใน AAR
ย้ายข้อมูลจากพร็อพเพอร์ตี้ปลายทางไปยังพร็อพเพอร์ตี้ outputLocation เพื่อแก้ไขคำเตือนการเลิกใช้งานและเตรียมพร้อมสำหรับ Gradle 9.0
พิจารณาแฟล็ก `--release` เมื่อตั้งค่างาน JavaCompile
[AGP-7.3.0-beta03] ShrinkResourcesNewShrinkerTask ล้มเหลวเมื่อมีบรรทัดว่างหลังการประกาศ XML
lintVital เป้าหมายทํางานโดยค่าเริ่มต้นในตัวแปรการแก้ไขข้อบกพร่อง
เตือนเมื่อไม่มีไฟล์ Proguard
AGP พยายามเพิ่ม kotlinOptions.freeCompilerArgs ในเฟสการดำเนินการของงาน
การซิงค์ Gradle ไม่สำเร็จ: การซิงค์ไม่สำเร็จ: ไม่ทราบสาเหตุ
DependencyReportTask ใช้ร่วมกับแคชการกำหนดค่าไม่ได้
การลบล้างทรัพยากรด้วย resValue ใน build.gradle ทำให้เกิดข้อผิดพลาด: ทรัพยากรซ้ำ
บิลด์ประเภท "debug" มีคีย์การลงนามเริ่มต้น แต่บิลด์อื่นๆ ไม่มี
การใช้ฟีเจอร์แบบไดนามิกและการลดขนาดทรัพยากรทำให้เกิดข้อขัดข้องขณะรันไทม์
บิลด์ประเภท "debug" มีคีย์การลงนามเริ่มต้น แต่บิลด์อื่นๆ ไม่มี
ไดเรกทอรีแหล่งที่มาที่สร้างขึ้นจะแสดงเป็นไดเรกทอรี 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: ไม่พบทรัพยากร: รหัส
configureCMakeDebug ขัดข้องเป็นครั้งคราวเนื่องจากมีข้อยกเว้นตัวชี้ Null
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 โดยใช้ API ของ AGP จะทำให้แคชการกำหนดค่าใช้งานไม่ได้
ปลั๊กอิน 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 false positive Recycle regarding openInputStream
[BuildTool/Lint] ตรวจสอบพร็อพเพอร์ตี้เครื่องมือสร้าง ChecksSdkIntAtLeast
Lint: การผสาน PartialResults ทำงานไม่ถูกต้อง
Android Studio ทำเครื่องหมายเวอร์ชันที่ระบุว่าล้าสมัยอย่างไม่ถูกต้อง
ระบบไม่เคยลงทะเบียน AndroidDeprecationInspection.DeprecationFilter EP ในไฟล์ android-plugin.xml
คำอธิบายการตรวจสอบ Lint ของ AccessibilityDetector ล้าสมัยแล้ว
การตรวจสอบ Lint SDK_INT ควรเข้าใจตัวแปรในเครื่องชั่วคราว
ข้อผิดพลาดเมื่อ TestMode.TYPE_ALIAS แทนที่ประเภทฟังก์ชันด้วย typealias
ข้อบกพร่อง: เมื่อสร้าง ObjectAnimator นอกบล็อกโค้ดปัจจุบัน จะมีคำเตือนที่ระบุว่าไม่ได้เริ่มทำงาน #38
Lint: NPE due to querying Application instance in mergeOnly mode
กฎ Lint NonConstantResourceId ไม่สามารถตรวจหาเพื่อกำหนดค่าคงที่จากรหัสทรัพยากรได้
ไม่แสดงข้อผิดพลาดในรหัสมุมมอง
การไม่สามารถยกเลิกการซีเรียลไลซ์ผลลัพธ์แคชของทรัพยากร Lint จะทำให้เกิดข้อผิดพลาดของ Lint (แต่ควรเป็นคำเตือน)
AGP Flamingo Alpha 8 Lint NewApi Desugar Regression
TypedArray#close (API 31) ไม่ได้ทำการ Desugar แต่ 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 - Attempt to enqueue an action in a non pushable enqueuer work list
การลดขนาดโค้ด 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 ปฏิเสธคลาสเมื่อใช้ R8 กับ Kotlin 1.8.20
R8 ใน AGP 8 ทำให้บริการ Google Fit หยุดทำงาน
การรวมข้อมูลไฟล์ต้นฉบับที่มีชื่อที่เหลือซึ่งทับซ้อนกับชื่ออินพุตจะแสดงอย่างไม่ถูกต้อง