Android Studio 3.4 (เมษายน 2019)
Android Studio 3.4 เป็นรุ่นหลักที่มีฟีเจอร์ใหม่ๆ และการปรับปรุงต่างๆ มากมาย
3.4.2 (กรกฎาคม 2019)
การอัปเดตเล็กน้อยนี้ครอบคลุมถึงการแก้ไขข้อบกพร่องและการปรับปรุงประสิทธิภาพด้านต่างๆ หากต้องการดูรายการข้อบกพร่องที่แก้ไขแล้วที่สำคัญ โปรดอ่านโพสต์ที่เกี่ยวข้องใน บล็อกการอัปเดตรุ่น
3.4.1 (พฤษภาคม 2019)
การอัปเดตเล็กน้อยนี้ครอบคลุมถึงการแก้ไขข้อบกพร่องและการปรับปรุงประสิทธิภาพด้านต่างๆ หากต้องการดูรายการข้อบกพร่องที่แก้ไขแล้วที่สำคัญ โปรดอ่านโพสต์ที่เกี่ยวข้องใน บล็อกการอัปเดตรุ่น
ปัญหาที่ทราบของ 3.4.0
ระบบจะปิดใช้โปรไฟล์เมื่อคุณติดตั้งใช้งานแอปในอุปกรณ์ที่ใช้ Android Q รุ่นเบต้า
- เมื่อใช้ Data Binding Library
LiveDataListener.onChanged()
อาจไม่สําเร็จด้วย NPE การแก้ไขสำหรับปัญหานี้จะรวมอยู่ใน Android Studio 3.4.1 และพร้อมใช้งานแล้วในเวอร์ชันตัวอย่างล่าสุดของ Android Studio 3.5 (ดู ปัญหา #122066788)
IntelliJ IDEA 2018.3.4
IDE หลักของ Android Studio ได้รับการอัปเดตด้วยการปรับปรุงจาก IntelliJ IDEA ผ่านรุ่น 2018.3.4
การอัปเดตปลั๊กอิน Android Gradle 3.4.0
ดูข้อมูลว่ามีอะไรใหม่ในปลั๊กอิน Android Gradle 3.4.0 ได้ในบันทึกประจำรุ่น
กล่องโต้ตอบโครงสร้างโปรเจ็กต์ใหม่
กล่องโต้ตอบโครงสร้างโปรเจ็กต์ (PSD) ใหม่ช่วยให้คุณอัปเดตข้อกําหนดเบื้องต้นและกำหนดค่าแง่มุมต่างๆ ของโปรเจ็กต์ได้ง่ายขึ้น เช่น โมดูล ตัวแปรการสร้าง การกําหนดค่าการรับรอง และตัวแปรการสร้าง
คุณเปิด PSD ได้โดยเลือก File > Project Structure จากแถบเมนู หรือจะเปิด PSD โดยกด Ctrl+Shift+Alt+S
ใน Windows และ Linux หรือ Command+;
(เซมิโคลอน) ใน macOS ก็ได้ คุณสามารถดูคำอธิบายของส่วนใหม่และส่วนที่ได้รับการอัปเดตของ PSD ได้ที่ด้านล่าง
ตัวแปร
ส่วนตัวแปรใหม่ของ PSD ช่วยให้คุณสร้างและจัดการตัวแปรการสร้างได้ เช่น ตัวแปรสำหรับทำให้หมายเลขเวอร์ชันของข้อกำหนดต่างๆ ที่สอดคล้องกันทั่วทั้งโปรเจ็กต์
- ดูและแก้ไขตัวแปรการสร้างที่มีอยู่ในสคริปต์การสร้าง Gradle ของโปรเจ็กต์ได้อย่างรวดเร็ว
- เพิ่มตัวแปรบิลด์ใหม่ที่ระดับโปรเจ็กต์หรือโมดูลจาก PSD โดยตรง
หมายเหตุ: หากไฟล์การกำหนดค่าบิลด์ที่มีอยู่กำหนดค่าผ่านสคริปต์ Groovy ที่ซับซ้อน คุณอาจแก้ไขค่าเหล่านั้นผ่าน PSD ไม่ได้ นอกจากนี้ คุณยังแก้ไขไฟล์บิลด์ที่เขียนด้วย Kotlin โดยใช้ PSD ไม่ได้
โมดูล
กำหนดค่าพร็อพเพอร์ตี้ที่ใช้กับตัวแปรของบิลด์ทั้งหมดในโมดูลที่มีอยู่ หรือเพิ่มโมดูลใหม่ลงในโปรเจ็กต์จากส่วนโมดูล เช่น คุณสามารถกําหนดค่าพร็อพเพอร์ตี้ defaultConfig
หรือจัดการการกําหนดค่าการรับรองได้ที่นี่
ทรัพยากร Dependency
ตรวจสอบและแสดงภาพทรัพยากรแต่ละรายการในกราฟทรัพยากรของโปรเจ็กต์ตามที่ Gradle แก้ปัญหาระหว่างการซิงค์โปรเจ็กต์โดยทำตามขั้นตอนต่อไปนี้
- เลือกทรัพยากร Dependencies ในแผงด้านซ้ายของ PSD
- ในแผงโมดูล ให้เลือกโมดูลที่ต้องการตรวจสอบการพึ่งพาที่แก้ไขแล้ว
- ทางด้านขวาของ PSD ให้เปิดแผงทรัพยากรที่เกี่ยวข้องซึ่งแก้ไขแล้วที่แสดงอยู่ด้านล่าง
นอกจากนี้ คุณยังค้นหาและเพิ่มข้อกำหนดเบื้องต้นลงในโปรเจ็กต์ได้อย่างรวดเร็วโดยการเลือกโมดูลจากส่วนข้อกำหนดเบื้องต้นของ PSD ก่อน จากนั้นคลิกปุ่ม (+) ในส่วนข้อกำหนดเบื้องต้นที่ประกาศ แล้วเลือกประเภทข้อกำหนดเบื้องต้นที่ต้องการเพิ่ม
คุณควรเห็นกล่องโต้ตอบคล้ายกับด้านล่าง ซึ่งจะช่วยให้คุณเพิ่มข้อกำหนดในโมดูลได้ ทั้งนี้ขึ้นอยู่กับประเภทของข้อกำหนดที่เลือก
ตัวแปรการสร้าง
ในส่วนนี้ของ PSD ให้สร้างและกําหนดค่าตัวแปรของบิลด์และรสชาติของผลิตภัณฑ์สําหรับแต่ละโมดูลในโปรเจ็กต์ คุณสามารถเพิ่มตัวยึดตําแหน่งไฟล์ Manifest, เพิ่มไฟล์ ProGuard และกำหนดคีย์การรับรอง และอื่นๆ
คำแนะนำ
ดูการอัปเดตที่แนะนำสำหรับทรัพยากร Dependency ของโปรเจ็กต์และตัวแปรการสร้างในส่วนคำแนะนำดังที่แสดงด้านล่าง
ผู้จัดการทรัพยากรใหม่
เครื่องมือจัดการทรัพยากรเป็นหน้าต่างเครื่องมือใหม่สำหรับการนําเข้า สร้าง จัดการ และใช้ทรัพยากรในแอป คุณสามารถเปิดหน้าต่างเครื่องมือได้โดยเลือกดู > หน้าต่างเครื่องมือ > เครื่องมือจัดการทรัพยากรจากแถบเมนู เครื่องมือจัดการทรัพยากรช่วยให้คุณทําสิ่งต่อไปนี้ได้
- แสดงภาพทรัพยากร: คุณดูตัวอย่างทรัพยากรที่ถอนออกได้ สี และเลย์เอาต์เพื่อค้นหาทรัพยากรที่ต้องการได้อย่างรวดเร็ว
- นำเข้าหลายรายการพร้อมกัน: คุณนำเข้าเนื้อหาที่ถอนได้หลายรายการพร้อมกันได้โดยลากและวางเนื้อหาลงในหน้าต่างเครื่องมือเครื่องมือจัดการทรัพยากร หรือใช้วิซาร์ดนำเข้าเนื้อหาที่ถอนออกได้ หากต้องการเข้าถึงวิซาร์ด ให้เลือกปุ่ม (+) ที่มุมซ้ายบนของหน้าต่างเครื่องมือ แล้วเลือกนำเข้าสิ่งที่วาดได้จากเมนูแบบเลื่อนลง
-
แปลง SVG เป็นออบเจ็กต์
VectorDrawable
: คุณสามารถใช้วิซาร์ดนําเข้าสิ่งที่วาดได้เพื่อแปลงรูปภาพ SVG เป็นออบเจ็กต์VectorDrawable
- ลากและวางชิ้นงาน: จากหน้าต่างเครื่องมือตัวจัดการทรัพยากร คุณสามารถลากและวางรายการที่วาดได้ทั้งในมุมมองการออกแบบและ XML ของเครื่องมือแก้ไขเลย์เอาต์
- ดูเวอร์ชันอื่น: ตอนนี้คุณดูเวอร์ชันอื่นของทรัพยากรได้โดยดับเบิลคลิกทรัพยากรภายในหน้าต่างเครื่องมือ มุมมองนี้แสดงเวอร์ชันต่างๆ ที่คุณสร้างและตัวกรองที่รวมไว้
- ไทล์และมุมมองรายการ: คุณสามารถเปลี่ยนมุมมองภายในหน้าต่างเครื่องมือเพื่อแสดงภาพทรัพยากรในการจัดเรียงที่แตกต่างกันได้
หากต้องการดูข้อมูลเพิ่มเติม โปรดอ่านคำแนะนำเกี่ยวกับวิธีจัดการทรัพยากรของแอป
การตรวจสอบรหัสบิลด์เมื่อทำโปรไฟล์และแก้ไขข้อบกพร่องของ APK
เมื่อคุณระบุไฟล์สัญลักษณ์การแก้ไขข้อบกพร่องสำหรับ.so
ไลบรารีที่แชร์ภายใน APK ของคุณ Android Studio จะตรวจสอบว่ารหัสบิลด์ของไฟล์สัญลักษณ์ที่ระบุตรงกับรหัสบิลด์ของไลบรารี .so
ภายใน APK
หากคุณสร้างไลบรารีแบบเนทีฟใน APK ด้วยรหัสบิลด์ Android Studio จะตรวจสอบว่ารหัสบิลด์ในไฟล์สัญลักษณ์ตรงกับรหัสบิลด์ในไลบรารีแบบเนทีฟหรือไม่ และจะปฏิเสธไฟล์สัญลักษณ์หากไม่ตรงกัน หากคุณไม่ได้สร้างด้วยรหัสบิลด์ การให้ไฟล์สัญลักษณ์ที่ไม่ถูกต้องอาจทำให้เกิดปัญหาในการแก้ไขข้อบกพร่อง
เปิดใช้ R8 โดยค่าเริ่มต้น
R8 ผสานรวมเครื่องมือลดน้ำตาล ลดขนาด ปรับให้ยากต่อการอ่าน (Obfuscate) เพิ่มประสิทธิภาพ และถอดรหัสทั้งหมดในขั้นตอนเดียว ซึ่งส่งผลให้เกิดการปรับปรุงประสิทธิภาพบิลด์ที่สังเกตเห็นได้ R8 เปิดตัวในปลั๊กอิน Android Gradle 3.3.0 และ เปิดใช้โดยค่าเริ่มต้นสำหรับทั้งแอปและโปรเจ็กต์ไลบรารี Android ที่ใช้ปลั๊กอิน 3.4.0 ขึ้นไป
รูปภาพด้านล่างแสดงภาพรวมระดับสูงของกระบวนการคอมไพล์ก่อนที่จะมีการเปิดตัว R8
ตอนนี้ R8 จะทำการปรับขนาด การทำให้ซอร์สโค้ดอ่านไม่ออก การเพิ่มประสิทธิภาพ และการแปลงโค้ด Java เป็นรูปแบบ DEX (D8) ทั้งหมดให้เสร็จสมบูรณ์ในขั้นตอนเดียวดังที่แสดงด้านล่าง
โปรดทราบว่า R8 ออกแบบมาให้ทำงานร่วมกับกฎ ProGuard ที่มีอยู่ คุณจึงอาจไม่ต้องดำเนินการใดๆ เพื่อรับประโยชน์จาก R8 อย่างไรก็ตาม เนื่องจากเป็นเทคโนโลยีที่แตกต่างจาก 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
ของโปรเจ็กต์หรือไม่ก็ตาม
ตอนนี้เครื่องมือแก้ไขการนําทางรองรับอาร์กิวเมนต์ทุกประเภทแล้ว
ตอนนี้ตัวแก้ไขการนำทางรองรับอาร์กิวเมนต์ทุกประเภทที่คอมโพเนนต์การนำทางรองรับแล้ว ดูข้อมูลเพิ่มเติมเกี่ยวกับประเภทที่รองรับได้ที่หัวข้อส่งข้อมูลระหว่างปลายทาง
การปรับปรุงเครื่องมือสร้างเลย์เอาต์ {:#layout-editor}
แผงแอตทริบิวต์ในเครื่องมือแก้ไขเลย์เอาต์ได้รับการปรับปรุงให้มีประสิทธิภาพมากขึ้นในหน้าเดียวโดยมีส่วนที่คุณขยายได้เพื่อแสดงแอตทริบิวต์ที่กำหนดค่าได้ แผงแอตทริบิวต์ยังมีการอัปเดตต่อไปนี้ด้วย
- ส่วนแอตทริบิวต์ที่ประกาศใหม่จะแสดงรายการแอตทริบิวต์ที่ไฟล์เลย์เอาต์ระบุ และช่วยให้คุณเพิ่มแอตทริบิวต์ใหม่ได้อย่างรวดเร็ว
- ตอนนี้แผงแอตทริบิวต์ยังมีตัวบ่งชี้ข้างแอตทริบิวต์แต่ละรายการด้วย ซึ่งจะแสดงเป็นสี่เหลี่ยมจัตุรัสเต็มเมื่อค่าของแอตทริบิวต์เป็นการอ้างอิงทรัพยากร และแสดงเป็นสี่เหลี่ยมจัตุรัสว่างในกรณีอื่นๆ
- ระบบจะไฮไลต์แอตทริบิวต์ที่มีข้อผิดพลาดหรือคำเตือน ข้อความไฮไลต์สีแดงบ่งบอกถึงข้อผิดพลาด (เช่น เมื่อคุณใช้ค่าเลย์เอาต์ที่ไม่ถูกต้อง) และข้อความไฮไลต์สีส้มบ่งบอกถึงคําเตือน (เช่น เมื่อคุณใช้ค่าที่เขียนตายตัว)
การดำเนินการโดยเจตนาใหม่เพื่อนำเข้าทรัพยากร Dependency อย่างรวดเร็ว
หากคุณเริ่มใช้คลาส Jetpack และ Firebase บางคลาสในโค้ด การดําเนินการตามเจตนาใหม่จะแนะนําให้เพิ่มการพึ่งพาไลบรารี Gradle ที่จําเป็นลงในโปรเจ็กต์ หากคุณยังไม่ได้ดำเนินการดังกล่าว เช่น หากคุณอ้างอิงคลาส WorkManager
โดยไม่นําเข้าการพึ่งพา android.arch.work:work-runtime
ที่จําเป็นก่อน การดําเนินการตามเจตนาจะช่วยให้คุณทําได้อย่างง่ายดายในคลิกเดียว ดังที่แสดงด้านล่าง
โดยเฉพาะอย่างยิ่ง เนื่องจาก Jetpack ได้จัดแพ็กเกจไลบรารีสนับสนุนใหม่เป็นแพ็กเกจแยกต่างหากที่จัดการและอัปเดตได้ง่ายขึ้น การดำเนินการตามเจตนานี้จึงช่วยให้คุณเพิ่มเฉพาะไลบรารีที่ต้องใช้ในการคอมโพเนนต์ Jetpack ที่ต้องการใช้ได้อย่างรวดเร็ว