ปลั๊กอิน Android Gradle 3.4.0 (เมษายน 2019)
ปลั๊กอิน Android เวอร์ชันนี้ต้องการสิ่งต่อไปนี้
เวอร์ชันต่ำสุด | เวอร์ชันเริ่มต้น | หมายเหตุ | |
---|---|---|---|
Gradle | 5.1.1 | 5.1.1 | ดูข้อมูลเพิ่มเติมได้ที่การอัปเดต Gradle เมื่อใช้ Gradle 5.0 ขึ้นไป ขนาดกองหน่วยความจำของเดรัม Gradle เริ่มต้นจะลดลงจาก 1 GB เป็น 512 MB ซึ่งอาจส่งผลให้ประสิทธิภาพของบิลด์ลดลง หากต้องการลบล้างการตั้งค่าเริ่มต้นนี้ ให้ระบุขนาดฮีปของ Gradle daemon ในไฟล์ gradle.properties ของโปรเจ็กต์ |
เครื่องมือสร้าง SDK | 28.0.3 | 28.0.3 | ติดตั้งหรือกําหนดค่าเครื่องมือสร้าง SDK |
การอัปเดตย่อยนี้รองรับความเข้ากันได้กับการตั้งค่าและฟีเจอร์เริ่มต้นใหม่สำหรับ ระดับการเข้าถึงแพ็กเกจใน Android 11
ดูรายละเอียดได้ที่บันทึกประจำรุ่น 4.0.1
3.4.2 (กรกฎาคม 2019)
การอัปเดตเล็กน้อยนี้รองรับ Android Studio 3.4.2 และรวมการแก้ไขข้อบกพร่องและการปรับปรุงประสิทธิภาพหลายรายการ หากต้องการดูรายการข้อบกพร่องที่ควรทราบ โปรดอ่านโพสต์ที่เกี่ยวข้องใน บล็อกการอัปเดตรุ่น
3.4.1 (พฤษภาคม 2019)
การอัปเดตเล็กน้อยนี้รองรับ Android Studio 3.4.1 รวมถึงมีการแก้ไขข้อบกพร่องและการปรับปรุงประสิทธิภาพต่างๆ หากต้องการดูรายการข้อบกพร่องที่ควรทราบ โปรดอ่านโพสต์ที่เกี่ยวข้องใน บล็อกการอัปเดตรุ่น
ฟีเจอร์ใหม่
-
การกำหนดค่าทรัพยากร Dependency ของการตรวจสอบ Lint แบบใหม่: มีการเปลี่ยนแปลงลักษณะการทำงานของ
lintChecks
และเปิดตัวการกำหนดค่าทรัพยากร Dependency ใหม่ที่ชื่อว่าlintPublish
เพื่อให้คุณควบคุมได้มากขึ้นว่าจะจัดแพ็กเกจการตรวจสอบ Lint ใดในไลบรารี Android-
lintChecks
: นี่เป็นการกำหนดค่าที่มีอยู่ซึ่งคุณควรใช้สำหรับการตรวจสอบ Lint ที่ต้องการเรียกใช้เฉพาะเมื่อสร้างโปรเจ็กต์ในเครื่องเท่านั้น หากก่อนหน้านี้คุณใช้การกำหนดค่า Dependency เพื่อรวมการตรวจสอบ Lint ใน AAR ที่เผยแพร่ คุณต้องย้ายข้อมูล Dependency เหล่านั้นเพื่อใช้การกำหนดค่าlintPublish
ใหม่ตามที่อธิบายไว้ด้านล่างแทนlintChecks
-
lintPublish
: ใช้การกําหนดค่าใหม่นี้ในโปรเจ็กต์ไลบรารีสําหรับการตรวจสอบ Lint ที่ต้องการรวมไว้ใน AAR ที่เผยแพร่ ดังที่แสดงด้านล่าง ซึ่งหมายความว่าโปรเจ็กต์ที่ใช้ไลบรารีของคุณจะใช้การตรวจสอบ Lint เหล่านั้นด้วย
ตัวอย่างโค้ดต่อไปนี้ใช้การกำหนดค่าทั้ง 2 รายการในโปรเจ็กต์ไลบรารี Android ในพื้นที่
dependencies { // Executes lint checks from the ':lint' project at build time. lintChecks project(':lint') // Packages lint checks from the ':lintpublish' in the published AAR. lintPublish project(':lintpublish') }
dependencies { // Executes lint checks from the ':lint' project at build time. lintChecks(project(":lint")) // Packages lint checks from the ':lintpublish' in the published AAR. lintPublish(project(":lintpublish")) }
-
โดยทั่วไปแล้ว งานบรรจุภัณฑ์และการรับรองควรปรับปรุงความเร็วของงานโดยรวม หากคุณสังเกตเห็นประสิทธิภาพถดถอยที่เกี่ยวข้องกับงานเหล่านี้ โปรดรายงานข้อบกพร่อง
-
การเปลี่ยนแปลงลักษณะการทำงาน
-
คำเตือนการเลิกใช้งานปลั๊กอินฟีเจอร์ Instant App ของ Android: หากคุณยังคงใช้ปลั๊กอิน
com.android.feature
เพื่อสร้าง Instant App อยู่ ปลั๊กอิน Android Gradle 3.4.0 จะแสดงคำเตือนการเลิกใช้งาน โปรดย้ายข้อมูล Instant App ของคุณไปใช้ปลั๊กอินฟีเจอร์แบบไดนามิกเพื่อให้คุณยังคงสร้าง Instant App ได้ในปลั๊กอินเวอร์ชันในอนาคต ซึ่งจะช่วยให้คุณเผยแพร่ทั้งประสบการณ์การใช้งานแบบติดตั้งและแบบใช้งานได้ทันทีจาก Android App Bundle รายการเดียวได้ -
เปิดใช้ R8 โดยค่าเริ่มต้น: R8 ผสานรวมการลดน้ำตาล การลดขนาด การสร้างความสับสน การเพิ่มประสิทธิภาพ และการถอดรหัสทั้งหมดในขั้นตอนเดียว ซึ่งส่งผลให้เกิดการปรับปรุงประสิทธิภาพบิลด์ที่สังเกตเห็นได้ R8 เปิดตัวในปลั๊กอิน Android Gradle 3.3.0 และตอนนี้เปิดใช้โดยค่าเริ่มต้นสำหรับทั้งโปรเจ็กต์แอปและไลบรารี Android ที่ใช้ปลั๊กอิน 3.4.0 ขึ้นไป
รูปภาพด้านล่างแสดงภาพรวมระดับสูงของกระบวนการคอมไพล์ก่อนเปิดตัว R8
ตอนนี้ R8 จะทำการปรับขนาด การทำให้ซอร์สโค้ดอ่านไม่ออก การเพิ่มประสิทธิภาพ และการแปลงโค้ดเป็นรูปแบบ Dex (D8) ทั้งหมดให้เสร็จสมบูรณ์ในขั้นตอนเดียวดังที่แสดงด้านล่าง
โปรดทราบว่า R8 ออกแบบมาให้ทำงานร่วมกับกฎ ProGuard ที่มีอยู่ คุณจึงอาจไม่ต้องดำเนินการใดๆ เพื่อรับประโยชน์จาก R8 อย่างไรก็ตาม เนื่องจาก ProGuard เป็นเทคโนโลยีที่แตกต่างจาก ProGuard ซึ่งออกแบบมา สำหรับโปรเจ็กต์ Android โดยเฉพาะ ดังนั้น การย่อขนาดและการเพิ่มประสิทธิภาพอาจทำให้ระบบนำโค้ด ที่ ProGuard ยังไม่มีออก ดังนั้นในสถานการณ์ที่ไม่น่าจะเกิดขึ้นนี้ คุณอาจต้องเพิ่มกฎเพิ่มเติมเพื่อเก็บโค้ดนั้นไว้ในเอาต์พุตของบิลด์
หากประสบปัญหาในการใช้ R8 ให้อ่านคำถามที่พบบ่อยเกี่ยวกับความเข้ากันได้ของ R8 เพื่อตรวจสอบว่ามีวิธีแก้ปัญหาดังกล่าวหรือไม่ หากไม่มีวิธีแก้ปัญหาที่บันทึกไว้ โปรดรายงานข้อบกพร่อง
คุณสามารถปิดใช้ R8 ได้โดยเพิ่มบรรทัดใดบรรทัดหนึ่งต่อไปนี้ลงในไฟล์ gradle.properties
ของโปรเจ็กต์
# Disables R8 for Android Library modules only.
android.enableR8.libraries = false
# Disables R8 for all modules.
android.enableR8 = false
หมายเหตุ: สำหรับประเภทบิลด์หนึ่งๆ หากคุณตั้งค่า useProguard
เป็น false
ในไฟล์ build.gradle
ของโมดูลแอป ปลั๊กอิน Android Gradle จะใช้ R8 เพื่อลดขนาดโค้ดของแอปสำหรับประเภทบิลด์นั้น ไม่ว่าคุณจะปิดใช้ R8 ในไฟล์ gradle.properties
ของโปรเจ็กต์หรือไม่ก็ตาม
-
เลิกใช้งาน
ndkCompile
แล้ว: ตอนนี้คุณจะได้รับข้อผิดพลาดในการสร้างหากพยายามใช้ndkBuild
เพื่อคอมไพล์ไลบรารีแบบเนทีฟ คุณควรใช้ CMake หรือ ndk-build เพื่อเพิ่มโค้ด C และ C++ ลงในโปรเจ็กต์แทน
ปัญหาที่ทราบ
-
ปัจจุบันเราไม่ได้บังคับใช้การใช้ชื่อแพ็กเกจที่ไม่ซ้ำกันอย่างถูกต้อง แต่จะใช้แนวทางที่เข้มงวดมากขึ้นในปลั๊กอินเวอร์ชันที่ใหม่กว่า ในปลั๊กอิน Android Gradle เวอร์ชัน 3.4.0 คุณเลือกใช้เพื่อตรวจสอบว่าโปรเจ็กต์ประกาศชื่อแพ็กเกจที่ยอมรับได้หรือไม่โดยการเพิ่มบรรทัดด้านล่างลงในไฟล์
gradle.properties
android.uniquePackageNames = true
ดูข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าชื่อแพ็กเกจผ่านปลั๊กอิน Android Gradle ได้ที่ตั้งค่ารหัสแอปพลิเคชัน