Android Studio 3.4 (เมษายน 2019)

Android Studio 3.4 เป็นรุ่นหลักที่มีฟีเจอร์ใหม่ๆ มากมาย และการปรับปรุง

3.4.2 (กรกฎาคม 2019)

การอัปเดตเล็กน้อยนี้ครอบคลุมถึงการแก้ไขข้อบกพร่องและการปรับปรุงประสิทธิภาพด้านต่างๆ ถ้าต้องการดูรายการการแก้ไขข้อบกพร่องที่น่าสนใจ ให้อ่านโพสต์ที่เกี่ยวข้องใน บล็อกการอัปเดตการเผยแพร่

3.4.1 (พฤษภาคม 2019)

การอัปเดตเล็กน้อยนี้ครอบคลุมถึงการแก้ไขข้อบกพร่องและการปรับปรุงประสิทธิภาพด้านต่างๆ ถ้าต้องการดูรายการการแก้ไขข้อบกพร่องที่น่าสนใจ ให้อ่านโพสต์ที่เกี่ยวข้องใน บล็อกการอัปเดตการเผยแพร่

3.4.0 ปัญหาที่ทราบ

  • การทำโปรไฟล์จะถูกปิดใช้ขณะทำให้แอปใช้งานได้ในอุปกรณ์ ที่ใช้ Android Q รุ่นเบต้า

  • เมื่อใช้ไลบรารีการเชื่อมโยงข้อมูล LiveDataListener.onChanged() อาจล้มเหลวเมื่อใช้ NPE การแก้ไข ของปัญหานี้จะรวมอยู่ใน Android Studio 3.4.1 และได้รวมอยู่ใน มีในเวอร์ชันล่าสุด เวอร์ชันตัวอย่างของ Android Studio 3.5 (โปรดดู ฉบับที่ 122066788)

IntelliJ IDEA 2018.3.4

Android Studio IDE หลักได้รับการอัปเดตพร้อมการปรับปรุงจาก IntelliJ นำเสนอไอเดียผ่าน รุ่น 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 ตามการแก้ไขโดย Gradle ระหว่างการซิงค์โปรเจ็กต์ โดยทำตามขั้นตอนต่อไปนี้ ขั้นตอน:

  1. ในแผงด้านซ้ายของ PSD ให้เลือก Dependencies
  2. ในแผงโมดูล ให้เลือกโมดูลที่คุณต้องการตรวจสอบการตั้งค่า ทรัพยากร Dependency ที่ได้รับการแก้ไขแล้ว
  3. ที่ด้านขวาของ PSD ให้เปิดแผงการขึ้นต่อกันที่แก้ไขแล้ว แสดงอยู่ด้านล่าง

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

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

สร้างตัวแปร

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

คำแนะนำ

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

ผู้จัดการทรัพยากรใหม่

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

  • แสดงภาพแหล่งข้อมูล: คุณสามารถดูตัวอย่างรายการที่ถอนออกได้ สี และเลย์เอาต์เพื่อ ค้นหาแหล่งข้อมูลที่คุณต้องการได้อย่างรวดเร็ว
  • นำเข้าหลายรายการพร้อมกัน: คุณนำเข้าเนื้อหาที่ถอนออกได้หลายรายการพร้อมกันโดยทำอย่างใดอย่างหนึ่งต่อไปนี้ ลากและวางรายการเหล่านี้ลงในหน้าต่างเครื่องมือเครื่องมือจัดการทรัพยากร หรือโดย โดยใช้วิซาร์ดนำเข้าเนื้อหาที่ถอนออกได้ หากต้องการเข้าถึงวิซาร์ด ให้เลือกเครื่องหมาย (+) ที่มุมซ้ายบนของหน้าต่างเครื่องมือ แล้วเลือก นำเข้าเนื้อหาที่ถอนออกได้จากเมนูแบบเลื่อนลง
  • แปลง SVG เป็นออบเจ็กต์ VectorDrawable: คุณสามารถใช้ นำเข้าวิซาร์ด" ที่ถอนออกได้เพื่อแปลงรูปภาพ SVG เป็น VectorDrawable ออบเจ็กต์
  • ลากและวางเนื้อหา: จากหน้าต่างเครื่องมือเครื่องมือจัดการทรัพยากร คุณสามารถทำสิ่งต่อไปนี้ ลากและวางสิ่งที่ถอนออกได้ลงในทั้งมุมมองการออกแบบและ XML ของเลย์เอาต์ ผู้แก้ไข
  • ดูเวอร์ชันอื่น: ตอนนี้คุณสามารถดูเวอร์ชันอื่นๆ ของ โดยการดับเบิลคลิกทรัพยากรภายในหน้าต่างเครื่องมือ มุมมองนี้ จะแสดงเวอร์ชันต่างๆ ที่คุณสร้างขึ้นและตัวระบุที่มี รวมไว้ด้วย
  • ไทล์และมุมมองรายการ: คุณสามารถเปลี่ยนมุมมองภายในหน้าต่างเครื่องมือเป็น ทำให้เห็นภาพทรัพยากรของคุณในการจัดเรียงที่แตกต่างกัน

หากต้องการดูข้อมูลเพิ่มเติม โปรดอ่านคู่มือเกี่ยวกับวิธี จัดการทรัพยากรของแอป

การตรวจสอบรหัสบิลด์เมื่อทำโปรไฟล์และแก้ไขข้อบกพร่องของ APK

เมื่อคุณให้ไฟล์สัญลักษณ์การแก้ไขข้อบกพร่องสำหรับไลบรารีที่ใช้ร่วมกัน .so รายการภายใน APK ของคุณ Android Studio จะตรวจสอบว่า รหัสบิลด์ของไฟล์สัญลักษณ์ที่ระบุตรงกัน รหัสบิลด์ของไลบรารี .so ภายใน APK

หากคุณสร้างไลบรารีเนทีฟใน APK ด้วยรหัสบิลด์ Android Studio ตรวจสอบว่ารหัสบิลด์ในไฟล์สัญลักษณ์ตรงกับรหัสบิลด์ใน ไลบรารีแบบเนทีฟและปฏิเสธไฟล์สัญลักษณ์หากข้อมูลไม่ตรงกัน ถ้า ที่คุณไม่ได้สร้างด้วยรหัสบิลด์ การให้ไฟล์สัญลักษณ์ที่ไม่ถูกต้องอาจ ทำให้เกิดปัญหาในการแก้ไขข้อบกพร่อง

R8 เปิดใช้อยู่โดยค่าเริ่มต้น

R8 ผสานรวมน้ำตาล การลดขนาด การสร้างความสับสน การเพิ่มประสิทธิภาพ และการจัดระเบียบทั้งหมดในขั้นตอนเดียว ซึ่งส่งผลให้เกิด การปรับปรุงประสิทธิภาพบิลด์ที่สังเกตเห็นได้ R8 เปิดตัวในปลั๊กอิน Android Gradle 3.3.0 และ เปิดใช้โดยค่าเริ่มต้นสำหรับทั้งแอปและโปรเจ็กต์ไลบรารี Android ที่ใช้ ปลั๊กอิน 3.4.0 ขึ้นไป

รูปภาพด้านล่างแสดงภาพรวมระดับสูงของกระบวนการคอมไพล์ ก่อนที่จะมีการเปิดตัว R8

ก่อน R8 ProGuard เป็นขั้นตอนคอมไพล์ที่แตกต่างจาก Dexing และ
            การขจัดน้ำตาล

ตอนนี้มี R8, การลดน้ำตาล, ลดขนาด, ปรับให้ยากต่อการอ่าน (Obfuscate), เพิ่มประสิทธิภาพ และ Dexing (D8) ก็เสร็จสมบูรณ์ในขั้นตอนเดียวตามที่แสดงไว้ด้านล่าง

ใช้ R8, ลดน้ำตาล, ลดขนาด, ปรับให้ยากต่อการอ่าน (Obfuscate), เพิ่มประสิทธิภาพ และ Dexing
            ซึ่งล้วนดำเนินการในขั้นตอนคอมไพล์ขั้นตอนเดียว

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

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