ปลั๊กอิน 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 (หรือ 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 ทดสอบของแอปไม่ได้ การเพิ่มข้อกําหนดในการทดสอบที่มีเครื่องมือวัดโดยใช้การกําหนดค่า
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