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) ใหม่ช่วยให้การอัปเดต ทรัพยากร Dependency และการกำหนดค่าส่วนต่างๆ ของโปรเจ็กต์ เช่น โมดูล ตัวแปรบิลด์ การกำหนดค่าการลงชื่อ และตัวแปรบิลด์ เป็นเรื่องง่ายขึ้น
คุณสามารถเปิด PSD ได้โดยเลือกไฟล์ > โครงสร้างโปรเจ็กต์ จากแถบเมนู
นอกจากนี้ คุณยังเปิด PSD ได้โดยกด Ctrl+Shift+Alt+S ใน Windows และ
Linux หรือ Command+; (เซมิโคลอน) ใน macOS คุณสามารถดูคำอธิบายของส่วนใหม่และส่วนที่อัปเดตบางส่วนของ
PSD ได้ด้านล่าง
ตัวแปร
ส่วนตัวแปรใหม่ของ PSD ช่วยให้คุณสร้างและจัดการตัวแปรบิลด์ เช่น ตัวแปรที่ใช้เก็บหมายเลขเวอร์ชันของทรัพยากร Dependency ให้สอดคล้องกัน ในโปรเจ็กต์

- ดูและแก้ไขตัวแปรบิลด์ที่มีอยู่แล้วในสคริปต์บิลด์ Gradle ของโปรเจ็กต์ได้อย่างรวดเร็ว
- เพิ่มตัวแปรบิลด์ใหม่ที่ระดับโปรเจ็กต์หรือโมดูลได้โดยตรงจาก PSD
หมายเหตุ: หากไฟล์การกำหนดค่าบิลด์ที่มีอยู่กำหนด ค่าผ่านสคริปต์ Groovy ที่ซับซ้อน คุณอาจแก้ไขค่าเหล่านั้น ผ่าน PSD ไม่ได้ นอกจากนี้ คุณยังแก้ไขไฟล์บิลด์ที่เขียนด้วย Kotlin โดยใช้ PSD ไม่ได้
โมดูล
กำหนดค่าพร็อพเพอร์ตี้ที่จะใช้กับตัวแปรบิลด์ทั้งหมดในโมดูลที่มีอยู่
หรือเพิ่มโมดูลใหม่ลงในโปรเจ็กต์จากส่วนโมดูล เช่น คุณสามารถกำหนดค่าพร็อพเพอร์ตี้ defaultConfig หรือจัดการการกำหนดค่าการลงชื่อได้ที่นี่
ทรัพยากร Dependency
ตรวจสอบและแสดงภาพทรัพยากร Dependency แต่ละรายการในกราฟทรัพยากร Dependency ของ โปรเจ็กต์ตามที่ Gradle แก้ไขระหว่างการซิงค์โปรเจ็กต์โดยทำตามขั้นตอนต่อไปนี้
- เลือกทรัพยากร Dependency ในแผงด้านซ้ายของ PSD
- ในแผงโมดูล ให้เลือกโมดูลที่ต้องการตรวจสอบ ทรัพยากร Dependency ที่แก้ไขแล้ว
- เปิดแผงทรัพยากร Dependency ที่แก้ไขแล้ว ทางด้านขวาของ PSD ซึ่ง แสดงอยู่ด้านล่าง

นอกจากนี้ คุณยังค้นหาและเพิ่มทรัพยากร Dependency ลงในโปรเจ็กต์ได้อย่างรวดเร็วโดย เลือกโมดูลจากส่วนทรัพยากร Dependency ของ PSD ก่อน จากนั้นคลิก ปุ่ม (+) ในส่วนทรัพยากร Dependency ที่ประกาศ แล้วเลือกประเภท ทรัพยากร Dependency ที่ต้องการเพิ่ม
คุณควรเห็นกล่องโต้ตอบ ที่คล้ายกับกล่องโต้ตอบด้านล่าง ซึ่งช่วยให้คุณเพิ่มทรัพยากร Dependency ลงในโมดูลได้ ทั้งนี้ขึ้นอยู่กับประเภททรัพยากร Dependency ที่เลือก

ตัวแปรบิลด์
ในส่วนนี้ของ PSD ให้สร้างและกำหนดค่าตัวแปรบิลด์และ Product Flavor สำหรับแต่ละโมดูลในโปรเจ็กต์ คุณสามารถเพิ่มตัวยึดตำแหน่ง Manifest, เพิ่ม ไฟล์ ProGuard และกำหนดคีย์การลงชื่อ และอื่นๆ

คำแนะนำ
ดูการอัปเดตที่แนะนำสำหรับทรัพยากร Dependency ของโปรเจ็กต์และตัวแปรบิลด์ในส่วน คำแนะนำ ดังที่แสดงด้านล่าง

เครื่องมือจัดการทรัพยากรใหม่
เครื่องมือจัดการทรัพยากรเป็นหน้าต่างเครื่องมือใหม่สำหรับนำเข้า สร้าง จัดการ และ ใช้ทรัพยากรในแอป คุณสามารถเปิดหน้าต่างเครื่องมือได้โดยเลือก มุมมอง > หน้าต่างเครื่องมือ > เครื่องมือจัดการทรัพยากร จากแถบเมนู เครื่องมือจัดการทรัพยากร ช่วยให้คุณทำสิ่งต่อไปนี้ได้

- แสดงภาพทรัพยากร: คุณสามารถแสดงตัวอย่าง Drawable, สี และเลย์เอาต์เพื่อ ค้นหาทรัพยากรที่ต้องการได้อย่างรวดเร็ว
- นำเข้าจำนวนมาก: คุณสามารถนำเข้าชิ้นงาน Drawable หลายรายการพร้อมกันได้โดย ลากและวางลงในหน้าต่างเครื่องมือ เครื่องมือจัดการทรัพยากร หรือโดย ใช้ตัวช่วยสร้าง นำเข้า Drawable หากต้องการเข้าถึงตัวช่วยสร้าง ให้เลือกปุ่ม (+) ที่มุมซ้ายบนของหน้าต่างเครื่องมือ แล้วเลือก นำเข้า Drawable จากเมนูแบบเลื่อนลง
-
แปลง SVG เป็นออบเจ็กต์
VectorDrawable: คุณสามารถใช้ ตัวช่วยสร้างนำเข้า Drawable เพื่อแปลงรูปภาพ SVG เป็นออบเจ็กต์VectorDrawable - ลากและวางชิ้นงาน: จากหน้าต่างเครื่องมือเครื่องมือจัดการทรัพยากร คุณสามารถ ลากและวาง Drawable ลงในมุมมองการออกแบบและมุมมอง XML ของเครื่องมือสร้างเลย์เอาต์ได้
- ดูเวอร์ชันอื่น: ตอนนี้คุณสามารถดูทรัพยากรเวอร์ชันอื่นได้โดยดับเบิลคลิกทรัพยากรภายในหน้าต่างเครื่องมือ มุมมองนี้ จะแสดงเวอร์ชันต่างๆ ที่คุณสร้างขึ้นและตัวระบุที่รวมไว้
- มุมมองแบบเรียงต่อกันและมุมมองรายการ: คุณสามารถเปลี่ยนมุมมองภายในหน้าต่างเครื่องมือเพื่อ แสดงภาพทรัพยากรในรูปแบบต่างๆ
ดูข้อมูลเพิ่มเติมได้ที่คู่มือเกี่ยวกับวิธี จัดการทรัพยากรของแอป
การตรวจสอบรหัสบิลด์เมื่อทำโปรไฟล์และแก้ไขข้อบกพร่องของ APK
เมื่อคุณระบุไฟล์สัญลักษณ์การแก้ไขข้อบกพร่องสำหรับไลบรารีที่แชร์ .so ภายใน
APK ของคุณ Android Studio จะตรวจสอบว่า
รหัสบิลด์ ของไฟล์สัญลักษณ์ที่ระบุตรงกับ
รหัสบิลด์ของไลบรารี .so ภายใน APK หรือไม่
หากคุณสร้างไลบรารีแบบเนทีฟใน APK ด้วยรหัสบิลด์ Android Studio จะตรวจสอบว่ารหัสบิลด์ในไฟล์สัญลักษณ์ตรงกับรหัสบิลด์ใน ไลบรารีแบบเนทีฟหรือไม่ และจะปฏิเสธไฟล์สัญลักษณ์หากไม่ตรงกัน หาก คุณไม่ได้สร้างด้วยรหัสบิลด์ การระบุไฟล์สัญลักษณ์ที่ไม่ถูกต้องอาจ ทำให้เกิดปัญหาในการแก้ไขข้อบกพร่อง
เปิดใช้ R8 โดยค่าเริ่มต้น
R8 ผสานรวมกระบวนการ Desugaring การลดขนาด การปรับให้ยากต่อการอ่าน การเพิ่มประสิทธิภาพ และการแปลงเป็น Dex ทั้งหมดไว้ในขั้นตอนเดียว ซึ่งส่งผลให้ประสิทธิภาพการบิลด์ดีขึ้นอย่างเห็นได้ชัด R8 เปิดตัวในปลั๊กอิน Android Gradle 3.3.0 และ ตอนนี้เปิดใช้โดยค่าเริ่มต้นสำหรับทั้งโปรเจ็กต์แอปและไลบรารี Android ที่ใช้ ปลั๊กอิน 3.4.0 ขึ้นไป
รูปภาพด้านล่างแสดงภาพรวมระดับสูงของกระบวนการคอมไพล์ ก่อนที่จะมีการเปิดตัว R8

ตอนนี้ R8 จะดำเนินการยกเลิกการทำน้ำตาลออก การลดขนาด การปรับให้ยากต่อการอ่าน การเพิ่มประสิทธิภาพ และการแปลงเป็น 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 บางคลาสในโค้ด การดำเนินการตามความตั้งใจใหม่จะแนะนำให้เพิ่มทรัพยากร Dependency ในไลบรารี Gradle ที่จำเป็นลงในโปรเจ็กต์ หากคุณยังไม่ได้ดำเนินการดังกล่าว ตัวอย่างเช่น หากคุณอ้างอิงคลาส WorkManager โดยไม่ได้นำเข้าทรัพยากร Dependency android.arch.work:work-runtime ที่จำเป็นก่อน การดำเนินการตามความตั้งใจจะช่วยให้คุณดำเนินการดังกล่าวได้อย่างง่ายดายด้วยการคลิกเพียงครั้งเดียว ดังที่แสดงด้านล่าง

โดยเฉพาะอย่างยิ่ง เนื่องจาก Jetpack ได้จัดแพ็กเกจไลบรารีการสนับสนุนใหม่เป็นแพ็กเกจแยกกันซึ่งจัดการและอัปเดตได้ง่ายขึ้น การดำเนินการตามความตั้งใจนี้จะช่วยให้คุณเพิ่มเฉพาะทรัพยากร Dependency ที่จำเป็นสำหรับคอมโพเนนต์ Jetpack ที่ต้องการใช้ได้อย่างรวดเร็ว