ปลั๊กอิน Android Gradle 8.0.0 เป็นรุ่นหลักที่มีฟีเจอร์ใหม่ๆ มากมาย ฟีเจอร์และการปรับปรุงต่างๆ
ความเข้ากันได้
เวอร์ชันต่ำสุด | เวอร์ชันเริ่มต้น | หมายเหตุ | |
---|---|---|---|
เกรเดิล | 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 Upgrade Assistant) Assistant การอัปเกรดจะแนะนําให้คุณ อัปเดตโค้ดเพื่อรองรับการทำงานใหม่หรือการตั้งค่าสถานะเพื่อคงไว้ การทำงานก่อนหน้านี้
ตั้งค่าสถานะ | ค่าเริ่มต้นใหม่ | ค่าเริ่มต้นก่อนหน้า | หมายเหตุ |
---|---|---|---|
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 เป็นต้นไป คุณจะเปลี่ยนค่าสำหรับแฟล็กเหล่านี้ไม่ได้อีกต่อไป ถ้า
ที่คุณระบุไว้ในไฟล์ gradle.properties
ระบบจะไม่สนใจค่าดังกล่าวและ AGP
พิมพ์คำเตือน
ตั้งค่าสถานะ | ค่าที่บังคับใช้ | หมายเหตุ |
---|---|---|
android.dependencyResolutionAtConfigurationTime.warn |
true |
AGP 8.0 จะแสดงคำเตือนหากตรวจพบการแก้ไขการกำหนดค่าระหว่าง เฟสการกำหนดค่าเนื่องจากจะส่งผลเสียต่อการกำหนดค่า Gradle ครั้ง |
android.r8.failOnMissingClasses |
true |
AGP 8.0 ล้มเหลวกับบิลด์ที่ใช้ R8 หากไม่มีคลาสสำหรับ
เพื่อเพิ่มประสิทธิภาพ DEX ให้ดียิ่งขึ้น ปัญหานี้คุณจะต้องเพิ่ม
ไม่มีไลบรารีหรือกฎ -dontwarn รายการ Keep สำหรับรายละเอียดเพิ่มเติม
ดู
ไม่มีคำเตือนของชั้นเรียนในโปรแกรมย่อขนาด 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 การเผยแพร่ |
แฟล็กใหม่ที่เสถียรสำหรับโปรไฟล์การดำเนินการ
AGP มี Flag android.settings.executionProfile
ใหม่ ใช้แฟล็กนี้เพื่อ
ลบล้างโปรไฟล์การดำเนินการเริ่มต้น
SettingsExtension
ดูข้อมูลเพิ่มเติมได้ในเอกสารปลั๊กอินการตั้งค่า
หากต้องการดูตัวอย่างแฟล็กทดลอง โปรดดู ดูตัวอย่างบันทึกประจำรุ่น
ไม่รองรับการกำหนดพร็อพเพอร์ตี้แบบ 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 ของคุณ