ปลั๊กอิน Android Gradle 3.1.0 (มีนาคม 2018)
ปลั๊กอิน Android เวอร์ชันนี้ต้องการสิ่งต่อไปนี้
เวอร์ชันต่ำสุด | เวอร์ชันเริ่มต้น | หมายเหตุ | |
---|---|---|---|
Gradle | 4.4 | 4.4 | ดูข้อมูลเพิ่มเติมได้ที่การอัปเดต Gradle |
เครื่องมือสร้าง SDK | 27.0.3 | 27.0.3 | ติดตั้งหรือกําหนดค่าเครื่องมือสร้าง SDK โปรดทราบว่าคุณไม่จำเป็นต้องระบุเวอร์ชันสำหรับเครื่องมือสร้างโดยใช้พร็อพเพอร์ตี้ android.buildToolsVersion อีกต่อไป เนื่องจากปลั๊กอินจะใช้เวอร์ชันขั้นต่ำที่จำเป็นโดยค่าเริ่มต้น |
D8 ซึ่งเป็นคอมไพเลอร์ DEX ใหม่
โดยค่าเริ่มต้น Android Studio ใช้คอมไพเลอร์ DEX ใหม่ที่ชื่อว่า D8 การคอมไพล์ DEX เป็นกระบวนการแปลงไบต์โค้ด .class
เป็นไบต์โค้ด .dex
สำหรับ Android Runtime (หรือ Dalvik สำหรับ Android เวอร์ชันเก่า) D8 จะคอมไพล์ได้เร็วขึ้นและสร้างไฟล์ DEX ที่เล็กลงเมื่อเทียบกับคอมไพเลอร์ก่อนหน้าที่เรียกว่า DX ทั้งๆ ที่มีประสิทธิภาพรันไทม์ของแอปเท่าเดิมหรือดีกว่า
D8 ไม่ควรเปลี่ยนเวิร์กโฟลว์การพัฒนาแอปในแต่ละวัน อย่างไรก็ตาม หากพบปัญหาเกี่ยวกับคอมไพเลอร์ใหม่ โปรดรายงานข้อบกพร่อง คุณปิดใช้ D8 ชั่วคราวและใช้ DX ได้โดยใส่โค้ดต่อไปนี้ในไฟล์ gradle.properties
ของโปรเจ็กต์
android.enableD8=false
สำหรับโปรเจ็กต์ที่ใช้ฟีเจอร์ภาษาของ Java 8 ระบบจะเปิดใช้การกรอง Sugar ออกทีละส่วนโดยค่าเริ่มต้น คุณปิดใช้ได้โดยระบุข้อมูลต่อไปนี้ในไฟล์ gradle.properties
ของโปรเจ็กต์
android.enableIncrementalDesugaring=false.
ผู้ใช้เวอร์ชันตัวอย่าง: หากคุณใช้ D8 เวอร์ชันตัวอย่างอยู่แล้ว โปรดทราบว่าตอนนี้ D8 จะคอมไพล์กับไลบรารีที่รวมอยู่ในเครื่องมือสร้าง SDK ไม่ใช่ JDK ดังนั้น หากคุณเข้าถึง API ที่มีอยู่ใน JDK แต่ไม่มีในไลบรารีเครื่องมือบิลด์ SDK คุณจะได้รับข้อผิดพลาดในการคอมไพล์
การเปลี่ยนแปลงลักษณะการทำงาน
-
เมื่อสร้าง APK หลายรายการที่แต่ละรายการกำหนดเป้าหมายเป็น ABI ที่แตกต่างกัน เครื่องมือจะไม่สร้าง APK สำหรับ ABI ต่อไปนี้โดยค่าเริ่มต้นอีกต่อไป
mips
,mips64
และarmeabi
หากต้องการสร้าง APK ที่กําหนดเป้าหมาย ABI เหล่านี้ คุณต้องใช้ NDK r16b หรือต่ำกว่า และระบุ ABI ในไฟล์
build.gradle
ดังที่แสดงด้านล่างsplits { abi { include 'armeabi', 'mips', 'mips64' ... } }
splits { abi { include("armeabi", "mips", "mips64") ... } }
-
ตอนนี้ build cache ของปลั๊กอิน Android จะลบรายการแคชที่มีอายุมากกว่า 30 วัน
-
การส่ง
"auto"
ไปยังresConfig
จะไม่เลือกทรัพยากรสตริงโดยอัตโนมัติเพื่อรวมไว้ใน APK อีกต่อไป หากคุณใช้"auto"
ต่อไป ปลั๊กอินจะจัดแพ็กเกจทรัพยากรสตริงทั้งหมดที่แอปของคุณและทรัพยากร Dependency มีให้ คุณจึงควรระบุแต่ละภาษาที่ต้องการให้ปลั๊กอินแพ็กเกจใน APK แทน -
เนื่องจากโมดูลในเครื่องจะขึ้นอยู่กับ APK การทดสอบของแอปไม่ได้ การเพิ่มทรัพยากร Dependency ไปยังการทดสอบแบบมีเครื่องควบคุมโดยใช้การกำหนดค่า
androidTestApi
แทนandroidTestImplementation
จะทำให้ Gradle ออกคำเตือนต่อไปนี้WARNING: Configuration 'androidTestApi' is obsolete and has been replaced with 'androidTestImplementation'
WARNING: Configuration 'androidTestApi' is obsolete and has been replaced with 'androidTestImplementation'
การแก้ไข
- แก้ไขปัญหาที่ Android Studio ไม่รู้จัก dependencies ในบิลด์คอมโพสิตอย่างถูกต้อง
- แก้ไขปัญหาที่คุณได้รับข้อผิดพลาดในการซิงค์โปรเจ็กต์เมื่อโหลดปลั๊กอิน Android หลายครั้งในบิลด์เดียว เช่น เมื่อโปรเจ็กต์ย่อยหลายรายการมีปลั๊กอิน Android อยู่ใน classpath ของ buildscript